*编辑/更新问题以添加示例
大家好!我有这个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)。
提前致谢!
如果我正确理解了这个问题,这个例子应该显示你要求的内容?
假设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]
是用它填充的
如果代码不是太长整数,则只需构建正确的查找表:
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
。