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

时间:2017-11-02 01:31:44

标签: python numpy

给定两个数组,是否存在一种非循环的非循环方式来检查每个第i个索引是否在数组之间匹配,如果a [i] == b [i],还要检查每个i?

<img>

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

4 个答案:

答案 0 :(得分:4)

您可以使用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]),)

答案 1 :(得分:2)

其他答案的另一个变体:

np.flatnonzero(a == b)

答案 2 :(得分:0)

试试这个:

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]),)

答案 3 :(得分:0)

您可以尝试以下操作:

a = np.array([1,2,3,2,3,4,3,4,5,6])

b = np.array([8,2,10,2,7,4,10,4,9,8])

np.where(a == b)

(array([1, 3, 5, 7]),)