我这里有一个有点棘手的问题......
给定两个数组 A 和 B
A = np.array([8, 5, 3, 7])
B = np.array([5, 5, 7, 8, 3, 3, 3])
我想将 B 中的值替换为该值的索引在 A 中。在这个示例中,它看起来像:
[1, 1, 3, 0, 2, 2, 2]
对于我正在解决的问题,A 和 B 包含相同的值集,并且 A 中的所有条目都是唯一的。
解决这个问题的简单方法是使用如下内容:
for idx in range(len(A)):
ind = np.where(B == A[idx])[0]
B_new[ind] = A[idx]
但我正在使用的 B 数组包含近一百万个元素,并且使用 for 循环变得非常慢。一定有一种方法可以对其进行矢量化,但我无法弄清楚。我最接近的是做类似的事情
np.intersect1d(A, B, return_indices=True)
但这只给了我firstA 的每个元素在 B 中出现。有什么建议吗?