【问题标题】:How to sort a 2D array by rows and store indices in new 2d array如何按行对二维数组进行排序并将索引存储在新的二维数组中
【发布时间】:2020-06-10 07:28:36
【问题描述】:

我有一个维度数组 (43, 25520)。

我想对这 43 列中的每一列进行排序,然后将每一行的排序索引存储在一个新的二维数组中。所以输出应该是新排序的 (43, 25520)。

first_sorted = np.argsort(active_genevector[2,:])

这样,我得到了 43 行中第一行的排序 25520 索引。

我该怎么做才能最终将所有 43 个作为 (43, 25520) 数组?

【问题讨论】:

  • 我可能会弄错问题,因为我不明白,为什么你的输出只有 42 列,但 numpy.argsort 有一个 axis 属性。这样您就可以在整个 2D-Array 上使用该函数并按轴排序。
  • 哦,打错了.. 输出应该是 (43, 25520)
  • 好的,顺便说一句。通过上面使用np.argsort() 的方式,您将获得第二行而不是大二维数组的第一行,因为索引从零开始。
  • 当然!如何对每个轴进行排序,最后得到大数组?我刚刚找到 argsort(axis = x) 然后我可以为 x 轴排序..
  • 我发布了一个答案,希望对您有所帮助。输出数组result 与输入数组具有相同的维度。

标签: python arrays sorting np.argsort


【解决方案1】:

我做了一个简短的脚本来测试你需要什么:

import numpy as np

test = np.random.random((43,25520))

result = np.argsort(test, axis = 1)

print(result.shape)

我认为这对你有用。

【讨论】:

  • 不,遗憾的是这是错误的输出。 result[2,:] 是我的 first_sorted 之外的另一个输出..
  • 是的,我自己犯了一个错误,编辑了它,现在它应该可以工作了(轴应该是 1)
猜你喜欢
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 2020-10-07
  • 2020-01-18
  • 2015-09-17
相关资源
最近更新 更多