arrays - Python NumPy : Selecting array entries based on input array

标签 arrays numpy indexing

<分区>

假设我有一个数组:

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

现在我想在这个数组中找到对应于另一个数组输入给定值的元素的索引:

input = np.array([2,4,5])

预期的结果应该是:

result = [1,3,4]

对于元素索引 1、3、4 为真的 bool 掩码也可以。

我不想使用循环来解决这个问题。我假设一个可能的解决方案与 numpy where() 函数有关,但是使用这个函数,我一次只能将数组 a 的条目与数组输入的一个元素进行比较。因为输入的长度可能不同,所以我不能真正使用这种方法。您还有其他想法吗?

提前致谢。

最佳答案

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

或:

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

或按照建议here :

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

输出:

[1 3 4]

关于arrays - Python NumPy : Selecting array entries based on input array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62959344/

相关文章:

java - 二维数组,其单元格可以在索引处保存超过 1 个值

python - 如何从角点检测给出的点数组中检测特定的坐标点?

mysql - sql - @curRow 基于列

java - 使用 for 循环和对象方法在 Java 中为对象数组赋值时遇到问题

javascript - 如何使用 Angular 5 中的 ngrx 状态仅更新一个对象属性或数组中的多个对象属性?

javascript - 在 JavaScript 中将对象的值分配给另一个数组

python - 如何按频率对 NumPy 数组进行排序?

python - 如何通过第一列值简单地过滤 3d numpy 数组?

performance - 使用聚集索引扫描而不是查找的查询

c# - 为什么 ICollection 索引在实例化时不起作用?