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