Skip to main content
 首页 » 编程设计

python之比较两个数组并显示匹配项的总和

2025年05月04日14lori

我有 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。