检查两个numpython数组中有多少元素相等

检查两个numpython数组中有多少元素相等,python,arrays,numpy,Python,Arrays,Numpy,我有两个numpy数组,它们的编号(长度相同),我想计算这两个数组之间有多少元素相等(相等=数组中相同的值和位置) 然后我希望返回值为2(只有1和2在位置和值上相等)使用: 只要保证两个阵列具有相同的长度,您就可以使用: np.count_nonzero(A==B) 这是一个更快的解决方案,只要你知道数组的长度是相同的。@AndrewGuy如果数组的长度不相同会怎么样?@Euler_Salter假设你想计算具有相同值和位置的元素,我猜就像s=min(len(A),len(B));count=n

我有两个numpy数组,它们的编号(长度相同),我想计算这两个数组之间有多少元素相等(相等=数组中相同的值和位置)

然后我希望返回值为2(只有1和2在位置和值上相等)

使用:


只要保证两个阵列具有相同的长度,您就可以使用:

np.count_nonzero(A==B)

这是一个更快的解决方案,只要你知道数组的长度是相同的。@AndrewGuy如果数组的长度不相同会怎么样?@Euler_Salter假设你想计算具有相同值和位置的元素,我猜就像
s=min(len(A),len(B));count=np.count\u nonzero(A[:s]==B[:s])
@Euler\u Salter啊,这是一个不同的问题(肯定有一个问题有更好的答案……)。如果它们没有重复的元素,一种简单的方法(不确定是否一定是最好的)是
np.count\u nonzero(np.logical\u或.reduce(A[:,np.newaxis],B[np.newaxis,:],axis=0)]
。如果有人收到警告:“DeprecationWarning:elementwise comparison failed;这将在将来引发一个错误,求和结果中的值为0,请检查“a”和“b”的长度,因为它们可能具有不同的长度。我如何扩展此值以使其适用于二维阵列?@NicolasSchejtman答案中的解决方案应适用于二维阵列。尝试
a=np.array([[1,2,0],[3,4,0]]);b=np.数组([[1,9,0],[9,4,0]]);打印((a==b).sum())
@falsetru作为一种魅力。谢谢!如果有不同的形状和不同的索引呢?i、 e.
b=np.array([3,2,4,1,1])
@user5173426,
np.sum(a[:min(len(a),len(b))]==b[:min(len(a),len(b)))
>>> 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
np.count_nonzero(A==B)