【问题标题】:How to sort numpy array column-wise consequetly?如何按列对 numpy 数组进行排序?
【发布时间】:2021-09-21 11:43:37
【问题描述】:

因此,我想按列对二维数组进行排序,因此如果一列中的值相等,则排序由下一列执行。 例如数组

[[1, 0, 4, 2, 3]
 [0, 1, 5, 7, 4]
 [0, 0, 6, 1, 0]]

必须排序为

[[0, 0, 6, 1, 0]
 [0, 1, 5, 7, 4]
 [1, 0, 4, 2, 3]]

所以不能改变行,只能改变它们的顺序。我该怎么做?

【问题讨论】:

  • 您能否详细说明排序是如何完成的?非常不清楚。
  • @magicarm22,不,据我所知,我的问题没有答案,而且我谈论 numpy 并想使用它的功能,而它是该主题中讨论的列表跨度>
  • @Guy,我们按第一列对行进行排序。如果第一列中的值相等,那么对于这样的行,我们按第二列对它们进行排序。如果第二列中的值相等,那么我们查看第三列,依此类推。这就像字符串的字典排序

标签: python numpy sorting


【解决方案1】:

这应该可以工作

import numpy as np

a = np.array([[1, 0, 4, 2, 3],[0, 1, 5, 7, 4],[0, 0, 6, 1, 0]])

np.sort(a.view('i8,i8,i8,i8,i8'), order=['f0'], axis=0).view(np.int)

我明白了

array([[0, 0, 6, 1, 0],
       [0, 1, 5, 7, 4],
       [1, 0, 4, 2, 3]])

f0 是您要排序的列。

【讨论】:

  • 由于某种原因有一个冷却时间,所以我无法立即标记它
猜你喜欢
  • 2017-01-02
  • 2011-02-19
  • 2021-05-18
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多