我正在尝试执行以下操作:
import numpy as np
A = np.array([1,5,2,7,1])
B = np.sort(A)
print B
>>> [1,1,2,5,7]
我想在原始数组A中找到B中所有元素的位置。即我想创建一个数组C,以便
print C
>>[0,4,2,1,3]
指B中1位于A位于0位和第4位,B位于A位于第1位,等等
我尝试使用np.where( B == A)
,但却产生了乱码
答案 0 :(得分:9)
import numpy as np
A = np.array([1,5,2,7,1])
print np.argsort(A) #prints [0 4 2 1 3]
答案 1 :(得分:3)
如果您因任何原因不想出现任何问题,您也可以使用此代码:
a = [1,5,2,7,1]
b = zip(a, range(len(a)))
tmp = sorted(b, key=lambda x: x[0])
c = map( lambda x: x[1], tmp)
print c
[0,4,2,1,3]
答案 2 :(得分:1)
A = [1,5,2,7,1]
for i,e in sorted(enumerate(A), key=lambda x: x[1]):
print(i, e)
B = [x for x,_ in sorted(enumerate(A), key=lambda x: x[1])]
A = sorted(A)
print(A)
print(B)