【发布时间】:2014-10-18 21:11:17
【问题描述】:
我有两个带有数字的 numpy 数组(长度相同),我想计算这两个数组之间有多少元素相等(相等 = 数组中的相同值和位置)
A = [1, 2, 3, 4]
B = [1, 2, 4, 3]
那么我希望返回值为 2(只有 1&2 在位置和值上相等)
【问题讨论】:
我有两个带有数字的 numpy 数组(长度相同),我想计算这两个数组之间有多少元素相等(相等 = 数组中的相同值和位置)
A = [1, 2, 3, 4]
B = [1, 2, 4, 3]
那么我希望返回值为 2(只有 1&2 在位置和值上相等)
【问题讨论】:
使用numpy.sum:
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([1, 2, 4, 3])
>>> np.sum(a == b)
2
>>> (a == b).sum()
2
【讨论】:
a = np.array([[1,2,0],[3,4,0]]); b = np.array([[1,9,0],[9,4,0]]); print((a == b).sum())
b = np.array([3, 2, 4, 1, 1])
np.sum(a[:min(len(a), len(b))] == b[:min(len(a), len(b))])
只要保证两个数组的长度相同,就可以这样做:
np.count_nonzero(A==B)
【讨论】:
s = min(len(A), len(B)); count = np.count_nonzero(A[:s] == B[:s]) 一样。
np.count_nonzero(np.logical_or.reduce(A[:, np.newaxis], B[np.newaxis, :], axis=0))。