【发布时间】:2017-12-23 15:25:48
【问题描述】:
在我的脚本中,我需要将相当大的 NumPy 数组(2D 或 3D)与阈值进行比较。 比较本身可以使用“allclose”函数轻松完成,如下所示:
Threshold = 0.1
if (np.allclose(Arr1, Arr2, Threshold, equal_nan=True)):
Print('Same')
了解哪些单元格不同的最简单(但幼稚)的方法是使用简单的 for 循环代码,如下所示:
def CheckWhichCellsAreNotEqualInArrays(Arr1,Arr2,Threshold):
if not Arr1.shape == Arr2.shape:
return ['Arrays size not the same']
Dimensions = Arr1.shape
Diff = []
for i in range(Dimensions [0]):
for j in range(Dimensions [1]):
if not np.allclose(Arr1[i][j], Arr2[i][j], Threshold, equal_nan=True):
Diff.append(',' + str(i) + ',' + str(j) + ',' + str(Arr1[i,j]) + ','
+ str(Arr2[i,j]) + ',' + str(Threshold) + ',Fail\n')
return Diff
(对于 3D 数组也是如此 - 还有 1 个 for 循环)
当数组很大并且充满不相等的单元格时,这种方式非常慢。
如果它们不相同,是否有一种快速直接的方法 - 获取不均匀单元格的列表?也许是 NumPy 本身的一些内置函数?
【问题讨论】:
-
生成样本数据?
-
是的。如果单元格不相等 - 我想获取单元格的坐标,以及两个数组中的值。
标签: python arrays python-3.x numpy