gpt4 book ai didi

python - 在另一个数组中查找一个数组的匹配索引

转载 作者:IT老高 更新时间:2023-10-28 21:11:28 28 4
gpt4 key购买 nike

我有两个 numpy 数组,A 和 B。A 包含唯一值,B 是 A 的子数组。现在我正在寻找一种方法来获取 A 中 B 值的索引。

例如:

A = np.array([1,2,3,4,5,6,7,8,9,10])
B = np.array([1,7,10])
# I need a function fun() that:
fun(A,B)
>> 0,6,9

最佳答案

您可以使用 np.in1dnp.nonzero -

np.nonzero(np.in1d(A,B))[0]

您也可以使用np.searchsorted ,如果你关心维持秩序-

np.searchsorted(A,B)

对于一般情况,当 A & B 是未排序的数组时,您可以在 np 中引入 sorter 选项。 searchsorted,像这样 -

sort_idx = A.argsort()
out = sort_idx[np.searchsorted(A,B,sorter = sort_idx)]

我会添加我最喜欢的 broadcasting也可以解决一般情况-

np.nonzero(B[:,None] == A)[1]

示例运行 -

In [125]: A
Out[125]: array([ 7, 5, 1, 6, 10, 9, 8])

In [126]: B
Out[126]: array([ 1, 10, 7])

In [127]: sort_idx = A.argsort()

In [128]: sort_idx[np.searchsorted(A,B,sorter = sort_idx)]
Out[128]: array([2, 4, 0])

In [129]: np.nonzero(B[:,None] == A)[1]
Out[129]: array([2, 4, 0])

关于python - 在另一个数组中查找一个数组的匹配索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678543/

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