我想通过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.
您可以通过将and
替换为乘法来实现:
print(numpy.count_nonzero((array1 != array2) * (array2 != 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