仅按第二行对 np 二维数组进行排序[重复]

Posted

技术标签:

【中文标题】仅按第二行对 np 二维数组进行排序[重复]【英文标题】:Sort np 2 dimension array by the second row only [duplicate] 【发布时间】: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]])

有没有快速的方法?

在这里没有找到我想要的答案: Sorting arrays in NumPy by column

【问题讨论】:

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

【讨论】:

这样就行了。谢谢

以上是关于仅按第二行对 np 二维数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java数组自定义排序(二维数组)

java数组自定义排序(二维数组)

如何仅按第一个元素对 2D ArrayList<String> 进行排序

二维数组排序-qsort

二维数组排序-qsort

二维数组排序-qsort