如果我在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))
答案 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]])