gpt4 book ai didi

python - 确定数组B的每个元素在另一个数组A中的位置

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:43 28 4
gpt4 key购买 nike

给定两个列表:

In [518]: A
Out[518]: [3, 4, 2, 1, 7, 6, 5]

In [519]: B
Out[519]: [4, 6]

B 中的每个元素都存在于A 中,无一异常(exception)。

我想检索 B 的索引数组,如 A 中所示。例如,4 出现在 A 中的索引 1 中,而 6 位于 B 的位置 5 。对于这种情况,我的预期输出是 [1, 5]

这是我获取索引所做的:

In [520]: np.flatnonzero(np.in1d(a, b))
Out[520]: array([1, 5])

不幸的是,这在大多数其他情况下不起作用。例如,如果 B = [6, 4],我的方法在应该输出 [5, 1] 时仍然输出 [1, 5] >。

是否有一种有效的 numpy 方法来实现我想要实现的目标?

最佳答案

IIUC:

In [71]: a
Out[71]: array([3, 4, 2, 1, 7, 6, 5, 6, 4])

In [72]: b
Out[72]: array([4, 6])

In [73]: np.where(a==b[:,None])[1]
Out[73]: array([1, 8, 5, 7], dtype=int64)

In [74]: b = np.array([6, 4])

In [75]: np.where(a==b[:,None])[1]
Out[75]: array([5, 7, 1, 8], dtype=int64)

更新:如果您只需要第一次 出现的索引(以防A 数组中有重复项),则使用this solution from @Divakar ,这样会更快:

In [84]: (a==b[:,None]).argmax(1)
Out[84]: array([5, 1], dtype=int64)

关于python - 确定数组B的每个元素在另一个数组A中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46862256/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com