说我有一个NumPy数组:
[[4 9 2]
[5 1 3]]
我想对这个数组的最后一行进行排序,但是排在第一行的是排序,这样我得到:
[[9 2 4]
[1 3 5]]
我知道您可以使用sorted()函数进行排序,但这需要输入和输出列表。
有什么想法吗?非常感谢!
答案 0 :(得分:11)
import numpy as np
a = np.array([[4,9,2],[5,1,3]])
idx = np.argsort(a[1])
现在您可以使用idx索引数组:
b=a[:,idx]
答案 1 :(得分:1)
我能想到的唯一(高效)解决方案需要原始数组的副本。
import numpy as np
a = np.array([[4,9,2],[5,1,3]])
idx = np.argsort(a[1])
因此,idx
是排序列的索引。
c = a.copy()
for i in range(len(idx)):
a[:,i] = c[:,idx[i]]
这应该相当快,但当然会浪费一些记忆。