gpt4 book ai didi

python - 如何根据特定行中的值对 numpy 数组进行排序?

转载 作者:太空狗 更新时间:2023-10-30 00:44:53 30 4
gpt4 key购买 nike

我想知道如何才能根据其中一列中的值对整个数组进行排序。

我有:

array([5,2,8,2,4])

和:

array([[ 0,  1,  2,  3,  4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])

我想像这样将第一个数组附加到第二个数组:

array([[ 0,  1,  2,  3,  4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[5, 2, 8, 2, 4]])

然后按附加的行对数组进行排序以获得以下任一结果:

array([[1,  3,  4,  0,  2],
[6, 8, 9, 5, 7],
[11, 13, 14, 10, 12],
[16, 18, 19, 15, 17],
[21, 23, 24, 20, 22],
[2, 2, 4, 5, 8]])

或者这个:

array([[ 2,  1,  3,  4,  0],
[ 7, 6, 8, 9, 5],
[12, 11, 13, 14, 10],
[17, 16, 18, 19, 15],
[22, 21, 23, 24, 20],
[ 8, 5, 4, 2, 2]])

然后删除附加的列得到:

array([[1,  3,  4,  0,  2],
[6, 8, 9, 5, 7],
[11, 13, 14, 10, 12],
[16, 18, 19, 15, 17],
[21, 23, 24, 20, 22]])

或:

array([[ 2,  1,  3,  4,  0],
[ 7, 6, 8, 9, 5],
[12, 11, 13, 14, 10],
[17, 16, 18, 19, 15],
[22, 21, 23, 24, 20]])

是否有执行此过程的代码。我对 python 很陌生。非常感谢!

最佳答案

您可以使用 numpy.argsort获取包含数组排序索引的列表。然后,您可以使用它重新排列矩阵的列。

import numpy as np

c = np.array([5,2,8,2,4])
a = np.array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])

i = np.argsort(c)
a = a[:,i]

关于python - 如何根据特定行中的值对 numpy 数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331551/

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