假设我有一个这样的数组:
np.array([1., 1., 0.],
[0., 4., 0.],
[8., 0., 8.],
[0., 0., 0.],
[5., 0., 0.],
[2., 2., 2.]])
Run Code Online (Sandbox Code Playgroud)
column[0] 总和为 16,column[1] 为 6,column[2] 为 10。
如何在 Numpy 中有效地按最大到最小的列值重新排列数组?在上面的示例中,column[0] 将保持原位,而 column[1] 和 column[2] 将交换位置。
你可以试试sum一起axis=0并用argsort,然后逆转数组和使用:
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.]])
Run Code Online (Sandbox Code Playgroud)