考虑两个numpy数组

a = np.array(['john', 'bill', 'greg', 'bill', 'bill', 'greg', 'bill'])
b = np.array(['john', 'bill', 'greg'])

我将如何产生第三个数组
c = np.array([0,1,2,1,1,2,1])

a相同的长度,它表示a数组中b的每个条目的索引。

我可以通过将b的元素循环为b[i]并检查np.where(a == b[i])来看到一种方法,但我想知道numpy是否可以以更快/更好/更少代码行的方式实现此目的。

最佳答案

这是一个选择:

import numpy as np

a = np.array(['john', 'bill', 'greg', 'bill', 'bill', 'greg', 'bill'])
b = np.array(['john', 'bill', 'greg'])

my_dict = dict(zip(b, range(len(b))))

result = np.vectorize(my_dict.get)(a)

结果:
>>> result
array([0, 1, 2, 1, 1, 2, 1])

关于python - Numpy索引2个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23612699/

10-12 18:15