gpt4 book ai didi

python - numpy 排序 2d : rearrange rows without changing values in row

转载 作者:行者123 更新时间:2023-12-01 01:45:39 24 4
gpt4 key购买 nike

如何对数组中的行进行排序而不改变每行中的值?此外:如何获取此排序过程的索引?

输入:

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

所需的排序数组:

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

输出:

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

如何获取数组b

最佳答案

您需要lexsort这里:

b = np.lexsort((a[:, 1], a[:, 0]))
# array([1, 4, 3, 5, 2, 0], dtype=int64)

并应用于您的初始数组:

>>> a[b]
array([[0, 3],
[1, 2],
[1, 3],
[2, 0],
[3, 0],
[4, 3]])

正如@miradulo 指出的,您还可以使用:

b = np.lexsort(np.fliplr(a).T)

这比明确说明要排序的列要简洁。

关于python - numpy 排序 2d : rearrange rows without changing values in row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51370327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com