Numpy "类似排序" 函数

4 投票
1 回答
942 浏览
提问于 2025-04-18 08:34

假设我有两个数组,vw

v=np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
w=np.random.random(10,)
array([ 0.20224634,  0.19145386,  0.44607429,  0.53601637,  0.29148741,
        0.62670435,  0.95371219,  0.63634805,  0.48733178,  0.17155278])

我可以这样对 w 进行排序:

np.sort(w)
array([ 0.17155278,  0.19145386,  0.20224634,  0.29148741,  0.44607429,
        0.48733178,  0.53601637,  0.62670435,  0.63634805,  0.95371219])

我想要按照 w 的排序方式来排序 v。比如说,让元素 9 移动到元素 0 的位置,依此类推,直到 v 变成:

array([9, 1, 0, 4, 2, 8, 3, 5, 7, 6])

有没有简单的方法可以做到这一点?

如果没有,你会怎么做呢?

1 个回答

8

你可以使用 np.argsort 来获取排序的顺序:

order = np.argsort(w)

然后只需要对两个数组进行排序:

w = w[order]
v = v[order]

撰写回答