在给定相同索引的情况下检查两个数组是否匹配元素并返回匹配项数

新手上路,请多包涵

给定两个数组,是否有一种 numpy 非循环方法来检查数组之间的每个第 i 个索引是否匹配,也就是检查每个 i 如果 a[i]==b[i]?

 a = np.array([1,2,3,4,5,6,7,8])
b = np.array([2,3,4,5,6,7,8,9])
Output:  0 matches

我希望已经有人问过这个问题,但我找不到我要找的东西,如果是的话,我深表歉意。

原文由 dward4 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 595
2 个回答

尝试这个:

 np.arange(len(a))[a==b]

它创建一个从 0 到长度 a 的新数组,表示索引。然后使用 a==b 对数组进行切片,返回索引,其中 ab 相同。

另外来自@Reblochon-Masque:

您可以使用 numpy.where 提取两个值满足指定条件的索引:

 import numpy

a = numpy.array([0, 1, 2, 3, 4, 5, 6])
b = numpy.array([6, 5, 4, 3, 2, 1, 6])
numpy.where(a==b)

输出:

 (array([3, 6]),)

原文由 James 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 numpy.where 提取两个值满足指定条件的索引:

 import numpy

a = numpy.array([0, 1, 2, 3, 4, 5, 6])
b = numpy.array([6, 5, 4, 3, 2, 1, 6])
numpy.where(a==b)

输出:

 (array([3, 6]),)

原文由 Reblochon Masque 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题