根据总和对numpy数组进行排序

时间:2011-08-29 20:47:16

标签: python numpy

我想根据总和对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]]

最聪明最快的方法是什么?

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]])