【问题标题】:Sort np 2 dimension array by the second row only [duplicate]仅按第二行对 np 二维数组进行排序[重复]
【发布时间】:2019-01-08 20:04:47
【问题描述】:

我有这个 np 数组:

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

我想按第二行对其进行排序,以便第一行进行相应调整。所以输出应该是这样的:

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

有没有快速的方法?

【问题讨论】:

  • 第一行的每个对象都应该连接到第二行相同位置的元素。所以如果第二行的某个元素改变了它的位置,它在第一行的“伙伴”元素将移动到第一行的新位置。
  • @LucaCappelletti:另一个问题想根据特定列对数组的行进行排序,而这想根据特定行对列进行排序。这使得问题相似,但又足够不同,以至于许多人无法建立联系。

标签: python numpy


【解决方案1】:

您可以使用np.argsort() 获取第二行的排序版本的索引,并使用这些索引重新排列数组的列:

In [38]: a = np.array([[0, 0, 0, 0, 4, 4],
    ...:        [2, 3, 5, 6, 5, 6]])
    ...:        

In [39]: a[:, np.argsort(a[1])]
Out[39]: 
array([[0, 0, 0, 4, 0, 4],
       [2, 3, 5, 5, 6, 6]])

【讨论】:

  • 这样就行了。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 2013-08-17
  • 2018-04-20
  • 2022-01-10
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
相关资源
最近更新 更多