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

标签 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))

最佳答案

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

关于python - 按行的中值对 2D numpy 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22174958/

相关文章:

python - 在适用于不同用户的 sublime text 项目中使用 virtualenv

python - 将枕头 Image 对象转换为 JpegImageFile 对象

python - 使用 pycurl 获取回复的 header 值

python cv2.findContours 在简单的灰度图像中查找轮廓效果不佳

python - 从向量中减去 scipy.sparse 矩阵的列

python - Scrapy:0 件/分钟

python - 是否有使用 python asyncio 绑定(bind)的 C++ 的可靠 UDP 实现?

python - 生成每行重置具有最低 N 值位置的掩码数组

python - 如何对 2D numpy 数组执行按行或运算?

Python:计算数组中的相同行(没有任何导入)