我想根据总和对numpy数组进行排序。 像
这样的东西import numpy as np
a = np.array([1,2,3,8], [3,0,2,1])
b = np.sum(a, axis = 0)
idx = b.argsort()
现在np.take(a,idx)导致[2,1,3,8]。
但我想要一个数组:result = np.array([2,1,3,8],[0,3,2,1]]
最聪明最快的方法是什么?
答案 0 :(得分:5)
使用与您的问题相同的代码,您可以使用axis
的可选np.take
参数(默认使用扁平数组,这就是您只获得第一行的原因,请参阅{{ 3}}):
>>> np.take(a, idx, axis=1)
array([[2, 1, 3, 8],
[0, 3, 2, 1]])
或者您可以使用花式索引:
>>> a[:,idx]
array([[2, 1, 3, 8],
[0, 3, 2, 1]])