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

Sha*_*ski 38 python arrays numpy

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

A = [1, 2, 3, 4]
B = [1, 2, 4, 3]
Run Code Online (Sandbox Code Playgroud)

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

fal*_*tru 72

使用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
Run Code Online (Sandbox Code Playgroud)

  • 我如何扩展它以使其适用于二维数组? (2认同)
  • @NicolasSchejtman答案中的解决方案应该适用于2D阵列.试试`a = np.array([[1,2,0],[3,4,0]]); b = np.array([[1,9,0],[9,4,0]]); print((a == b).sum())` (2认同)

jde*_*esa 20

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

np.count_nonzero(A==B)
Run Code Online (Sandbox Code Playgroud)

  • 这是迄今为止更快的解决方案,只要您知道数组的长度相同。 (3认同)
  • @Euler_Salter假设你想要计算具有相同值和位置的元素,我猜想就像`s = min(len(A),len(B)); count = np.count_nonzero(A [:s] == B [:s])`. (2认同)
  • 仅供记录,如果有人收到警告:“DeprecationWarning:元素比较失败;这会在将来引发错误',并且总和结果中值为 0,请检查“a”和“b”的长度,因为它们的长度可能不同 (2认同)