如何用另一个数组的值替换包含索引的数组?

1 投票
1 回答
765 浏览
提问于 2025-04-18 10:38

我有一个数组 b,里面存的是数组 a 的索引。我想把另一个数组 c 的值插入到数组 b 中,位置要和 b 中的索引对应。

import numpy as np
a1=np.array([[1, 3, 5, 2, 3],[7, 6, 5, 2, 4],[2, 0, 5, 6, 4]])
a=a1.argsort()[:,:2]

## 这段代码会创建一个数组,里面是 a1 中两个最小值的索引

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

现在我想把 a 中的值 0 替换成 b 中的 1;把 3 替换成 4,依此类推。

我试着用:

[a[index]]=b[index]

但显然这不是正确的方法,因为数组 a 把这些索引当成了值来处理。

请帮帮我。

1 个回答

2

如果我理解得没错,你可以直接用a的扁平化版本来查找b中的内容:

result = b.ravel()[a.ravel()]

[1, 4, 4, 5, 2, 1]

如果你需要它和a保持相同的维度,你可以对它进行重新调整:

result = result.reshape(a.shape)

[[1, 4]
 [4, 5]
 [2, 1]]

撰写回答