提问人:jore1 提问时间:11/8/2023 更新时间:11/8/2023 访问量:31
Numpy 比较嵌套数组
Numpy comparing nested arrays
问:
我正在考虑任意 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,因为代码会按元素比较数组。
有没有一种简单的方法可以完成此操作,而不必遍历每个数组并直接进行比较?
答:
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] 进行比较。
评论
from numpy.testing import assert_allclose
或np.allclose