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

标签 python arrays python-2.7 numpy

我有 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 数组,因为 boolint 的子类,即 True 可以被认为是 1,False 被认为是 0。

关于python - 比较两个数组并显示匹配项的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49234225/

相关文章:

python - 如何使用PIP安装python-docx?

python-2.7 - 如何删除 Tkinter 网格布局中的整行

python - 无法使用 Python 抓取具有不变 URL 的多个页面

ios - Swift - 在 NSArchiving 数组之前重置突变属性

python - 如何查找 int 是否在数组数组中?

c# - 数组项上的 GetType()?

python - 在 python 中是否有更快的方法将字符串转换为 float ?

python - SQLAlchemy - 类型错误 : Boolean value of this clause is not defined

python - 重新格式化后,带有类型注释的 VS Code 中的语法突出显示不适用于 Python

python - 为什么 super 在 PySide/PyQt 中用得那么多?