按行的中位值排序二维numpy数组

2 投票
1 回答
1250 浏览
提问于 2025-04-17 20:47

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

撰写回答