Numpy 比较嵌套数组

Numpy comparing nested arrays

提问人:jore1 提问时间:11/8/2023 更新时间:11/8/2023 访问量:31

问:

我正在考虑任意 n 的形状 (n,2) 数组。我想检查两个元素的子数组是否匹配。举个例子:

import numpy as np

a=np.array([[1,0],[2,0]])
b=np.array([[1,0],[2,0]])
c=np.array([[3,0],[4,0]])
d=np.array([[1,0],[5,0]])

if (b == a).any() == True:
    print('y')
    
if (c == a).any() == True:
    print('y1')
    
if (d == a).any() == True:
    print('y2')

在此代码中,我将第一个和第三个条件的评估结果为 True。在编写时,所有语句都返回 True,因为代码会按元素比较数组。

有没有一种简单的方法可以完成此操作,而不必遍历每个数组并直接进行比较?

python 数组 numpy 多维数组 numpy-ndarray

评论

0赞 Mathieu 11/8/2023
from numpy.testing import assert_allclosenp.allclose

答:

0赞 Matthias Huschle 11/8/2023 #1

(c == a).all(axis=1).any()首先在轴 1 上检查所有元素是否相同,然后检查任何子数组是否相同。

仅当您想比较具有相同第一个索引的子数组时,这才有效,即 a[0] 与 b[0] 或 a[1] 与 b[1],但不能将 a[0] 与 b[1] 进行比较。