考虑两个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/