按行的中值对2D numpy数组进行排序

时间:2014-03-04 14:40:05

标签: python numpy

如果我在python中有一个2D列表,我可以很容易地按每个子列表的中值进行排序,如下所示:

import numpy as np
a = [[1,2,3],[1,1,1],[3,3,3,]]
a.sort(key=lambda x: np.median(x))
print a

...屈服

[[1, 1, 1], [1, 2, 3], [3, 3, 3]]

有没有办法用numpy数组执行此操作而不将其转换为常规python列表?

a = np.array([[1,2,3],[1,1,1],[3,3,3,]])
a.sort(key=lambda x: np.median(x))

1 个答案:

答案 0 :(得分:3)

我认为numpythonic方式是使用花式索引:

>>> a = np.array([[1,2,3],[1,1,1],[3,3,3,]])
>>> a[np.median(a,axis=1).argsort()]
array([[1, 1, 1],
       [1, 2, 3],
       [3, 3, 3]])