我想根据第一列对数组a
进行排序:
import numpy as np
a = np.array([[ 1.50000000e+03, 1.68693009e-01],
[ 5.00000000e+02, 1.26512097e-01],
[ 1.50000000e+03, 1.68338907e-01],
[ 5.00000000e+02, 1.22073944e-01],
[ 5.00000000e+02, 1.31257631e-01],
[ 1.50000000e+03, 1.72864036e-01],
[ 1.50000000e+03, 1.70665459e-01],
[ 5.00000000e+02, 1.32951654e-01],
[ 1.00000000e+03, 1.49342105e-01]])
sort = a.T.argsort(0)
b = a[sort]
print(b)
给了我:
[[[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]
[ 5.00000000e+02 1.26512097e-01]]
[[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]
[ 1.50000000e+03 1.68693009e-01]]]
我的条目a[:,0] == 1000
在哪里?它消失了。我如何生成一个数组,如a_sorted [0] =排序x和a_sorted [1] =排序y?
如果我没有在argsort之前转换a
,我会得到一个形状数组(9,2,2)
答案 0 :(得分:1)
a.sort(0)
根据第一列对数组进行排序(并保持1000):
array([[ 5.00000000e+02, 1.22073944e-01],
[ 5.00000000e+02, 1.26512097e-01],
[ 5.00000000e+02, 1.31257631e-01],
[ 5.00000000e+02, 1.32951654e-01],
[ 1.00000000e+03, 1.49342105e-01],
[ 1.50000000e+03, 1.68338907e-01],
[ 1.50000000e+03, 1.68693009e-01],
[ 1.50000000e+03, 1.70665459e-01],
[ 1.50000000e+03, 1.72864036e-01]])
如果您不想就地排序,可以使用:
a[a.argsort(0)[:,0]]