给定两个数组,是否有一种numpy非循环方法来检查数组之间的每个第i个索引是否匹配,也就是说,如果a[i]==b[i],是否检查每个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
我想这个问题已经被问过了,但我找不到我想要的东西,如果是的话,很抱歉。
试试这个:
np.arange(len(a))[a==b]
它创建一个从0到长度a
的新数组,表示索引。然后使用a==b
对数组进行切片,返回a
和b
相同的索引。
来自@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]),)
您可以使用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]),)
其他答案的另一个变体:
np.flatnonzero(a == b)
您可以尝试以下操作:
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]),)