【问题标题】:Python numpy: Selecting array entries based on input array [duplicate]Python numpy:根据输入数组选择数组条目[重复]
【发布时间】:2020-07-17 17:51:01
【问题描述】:

假设我有一个数组:

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

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

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

预期的结果应该是:

result = [1,3,4]

一个布尔掩码,对于元素索引 1,3,4 也是正确的。

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

提前致谢。

【问题讨论】:

标签: arrays numpy indexing


【解决方案1】:
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]

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 另一个线程的答案完美无缺。非常感谢,你帮了很多忙。
    • 请回答。谢谢你快乐学习
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多