我有一个指数数组,比如a = [2, 4, 1, 0, 3]
,我想把它转换成np.argsort(a) = [3, 2, 0, 4, 1]
.
b = np.zeros(a.size)
for i in range(a.size):
b[a[i]] = i
第二个问题是Python中的周期很慢,我希望可以使用一些NumPy技巧来实现这一目标.
我有一个指数数组,比如a = [2, 4, 1, 0, 3]
,我想把它转换成np.argsort(a) = [3, 2, 0, 4, 1]
.
b = np.zeros(a.size)
for i in range(a.size):
b[a[i]] = i
第二个问题是Python中的周期很慢,我希望可以使用一些NumPy技巧来实现这一目标.
你有0到len(a)-1的所有数字吗?
然后使用智能索引:
a = [2, 4, 1, 0, 3]
b = np.empty(len(a), dtype=int) # or b = np.empty_like(a)
b[a] = np.arange(len(a))
b
yields :array([3, 2, 0, 4, 1])