Python numpy:基于输入数组选择数组条目

3

假设我有一个数组:

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

现在我想要找到与另一个数组输入给定的值相对应的此数组中元素的索引:
input = np.array([2,4,5])

预期结果应为:
result = [1,3,4]

一个布尔掩码,其元素索引为1、3、4将是可行的。

我不想使用循环来解决这个问题。我认为可能的解决方案与numpy的where()函数有关,但是使用这个函数,我只能逐个比较数组a的条目和数组input的一个元素。由于输入的长度可能不同,我无法真正使用这种方法。你有其他的想法吗?

提前感谢。


你的数组是一维的吗? - Ehsan
np.flatnonzero(np.in1d(a, input)) - user3483203
2个回答

0

np.where(np.in1d(a, inp))[0] np.where(np.in1d(a, inp))[0]

np.where(np.in1d(a, inp))[0] np.where(np.in1d(a, inp))[0]


另一个线程的答案完美地解决了问题。非常感谢您,您帮了很大的忙。 - Herr_von_Bö
请上答案。谢谢,愉快学习! - Shalitha Jayamal

0
np.where(np.in1d(a, inp))[0]

或者:

np.isin(a, inp).nonzero()[0]

或者如建议的这里

sorter = np.argsort(a)
sorter[np.searchsorted(a, inp, sorter=sorter)]

输出:

[1 3 4]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接