如何使用另一个数组中的值更新numpy数组的所有值

问题描述 投票:1回答:2

*编辑/更新问题以添加示例

大家好!我有这个a np.array。根据它的参考值,我想更新数组b,这是我的矩阵。 a的“第1列”代表代码,“第2列”代表我的参考值。矩阵填充了代码,我必须替换它们。见下面的例子。

import numpy as np
a = np.asarray([[0, 11], [1, 22], [2, 33]])
b = np.asarray([[0, 14, 12, 2], [1, 1, 7, 0], [0, 0,3,5], [1, 2, 2, 6]])

换句话说:我想将“b”中的0,1,2值分别替换为11,22,33。

这是最好的方法,考虑到我的真正的a数组有+ - 50个代码,而我真正的b矩阵的形状为(850,850)。

提前致谢!

python arrays numpy
2个回答
1
投票

如果我正确理解了这个问题,这个例子应该显示你要求的内容?

假设a是您在上面列出的矩阵,b是您要写入的列表

import numpy as np
a = np.asarray([[0, 10], [2, 30], [1, 40]])
b = np.zeros(3)
b[a[:, 0]] = a[:, 1]

其中[:, 0]是要改变的指数,[:, 1]是用它填充的


0
投票

如果代码不是太长整数,则只需构建正确的查找表:

lut = np.arange(b.max()+1)
k,v = a.T
lut[k] = v

用于:

>>> b
[[ 0 14 12  2]
 [ 1  1  7  0]
 [ 0  0  3  5]
 [ 1  2  2  6]]

>>> lut[b]
[[11 14 12 33]
 [22 22  7 11]
 [11 11  3  5]
 [22 33 33  6]]

未定义的代码映射到自己,code=value

© www.soinside.com 2019 - 2024. All rights reserved.