我有 2 个形状相同的 numpy 数组。现在我想比较数组1和数组2的值,最后输出条件值== 1的匹配和。
数组 1:
[1, 0, 1]
[1, 1, 0]
[0, 0, 1]
数组 2:
[0, 1, 1]
[1, 0, 0]
[0, 1, 1]
结果现在应该是这样的:
sum = 3
----------------------------
我的以下算法有效,但性能和优雅度不高:
k = 0
for i in range(0,array1.shape[0],1):
for j in range(0, array1.shape[1], 1):
if array1[i][j] == array2[i][j] and array1[i][j] == 1:
k = k + 1
else:
continue
print k
最佳答案
这是结合您的 2 个条件的一种方法。
import numpy as np
a = np.array([[1, 0, 1],
[1, 1, 0],
[0, 0, 1]])
b = np.array([[0, 1, 1],
[1, 0, 0],
[0, 1, 1]])
res = np.sum((a==b) & (a==1)) # 3
解释
a==b
返回一个 bool 数组,按元素测试两个数组之间的相等性。a==1
返回一个 bool 数组,按元素测试a
中的元素是否等于 1。&
运算符用于表示必须满足两个条件。np.sum
适用于 bool 数组,因为bool
是int
的子类,即True
可以被认为是 1,False
被认为是 0。
关于python - 比较两个数组并显示匹配项的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49234225/