首页 > 解决方案 > 根据总和对数组列进行排序

问题描述

假设我有一个这样的数组:

np.array([1., 1., 0.],
       [0., 4., 0.],
       [8., 0., 8.],
       [0., 0., 0.],
       [5., 0., 0.],
       [2., 2., 2.]])

column[0] 总和为 16,column[1] 总和为 6,column[2] 总和为 10。

如何在 Numpy 中有效地按列值从最大到最小重新排列数组?在上面的示例中,column[0] 将保持原位,column[1] 和 column[2] 将切换位置。

标签: pythonnumpy

解决方案


您可以尝试使用然后反转数组并使用sumaxis=0argsort

a[:,np.argsort(a.sum(axis=0))[::-1]]

array([[1., 0., 1.],
       [0., 0., 4.],
       [8., 8., 0.],
       [0., 0., 0.],
       [5., 0., 0.],
       [2., 2., 2.]])

推荐阅读