按行的中位值排序二维numpy数组
如果我在Python中有一个二维列表,我可以很简单地按照每个子列表的中位数来排序,方法如下:
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]]
有没有办法在不把它转换成普通Python列表的情况下,用numpy数组来做到这一点呢?
a = np.array([[1,2,3],[1,1,1],[3,3,3,]])
a.sort(key=lambda x: np.median(x))
1 个回答
4
我想用numpy的方式来做的话,可以使用一种叫做“花式索引”的方法:
>>> 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]])