python - 根据总和对数组列进行排序
问题描述
假设我有一个这样的数组:
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] 将切换位置。
解决方案
您可以尝试使用然后反转数组并使用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.]])
推荐阅读
- reactjs - 带有功能组件的 React JS 上下文 API 不起作用
- javascript - 如何使用 Typescript 键入 ref 参数
- javascript - 如何获取跨度类标题值的值
- json - 来自寄存器变量的 ansible 访问项目
- database - 如何使用 Oracle dbms_ldap 或 dbms_ldap_utl 从 LDAP 获取操作属性?
- html - Span asp-validation-for 不一致?
- karate - 空手道 - 嵌套 JSON 对象模式验证导致空手道异常
- python - 给定任意两点之间的距离时如何对点进行聚类?
- excel - VBA Word:执行 While 循环
- sql - 大查询 - 使用关键字 @run_date 在外部分区表上安排查询