仅按第二行对 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 二维数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章