计算Python numpy中两个2D数组的不同非零值

问题描述 投票:0回答:2

我想通过Numpy找出2D数组array1中的多少个值与array2中相同位置(x,y)上的值不同,并且不等于0中的array2中的值。

array1 = numpy.array([[1, 2], [3, 0]])
array2 = numpy.array([[1, 2], [0, 3]])
print(numpy.count_nonzero(array1 != array2)) # 2

上面的示例打印2,因为0和3不同。如果array2中的值为0,有什么方法不计算差额?这样的东西(不起作用-ValueError: The truth value of an array with more then one element is ambiguous. Use a.any() or a.all()):

print(numpy.count_nonzero(array1 != array2 and array2 != 0)) # Should be 1.
python arrays numpy
2个回答
0
投票

您可以通过将and替换为乘法来实现:

print(numpy.count_nonzero((array1 != array2) * (array2 != 0)))

0
投票
a = np.array([[1, 2], [3, 0]])
b = np.array([[1, 2], [0, 3]])
c = a[b.nonzero()] != b[b.nonzero()]

In [142]: c.sum()
Out[142]: 1
© www.soinside.com 2019 - 2024. All rights reserved.