假设我有一个4D阵列
(600, 1, 3, 3)
如果您采用前两个元素,它们可能如下所示:
0 1 0
1 1 1
0 1 0
2 2 2
3 3 3
1 1 1
etc
我有一个包含某些权重的列表,我希望 替换 数组中的特定值。我的意图是使用list元素的索引匹配数组中的值。因此,这个清单
[0.1 1.1 1.2 1.3]
对我的数组应用时会得到以下结果:
0.1 1.1 0.1
1.1 1.1 1.1
0.1 1.1 0.1
1.2 1.2 1.2
1.3 1.3 1.3
1.1 1.1 1.1
etc
此方法必须遍历数组的整个600个元素。
我可以使用for
循环和array[array==x] = y
或np.place
以笨重的方式执行此操作,但我想避免循环,并且可能使用一次立即替换所有值的方法。有这样的方法吗?
答案 0 :(得分:1)
在评论中引用@Divakar的解决方案,以非常有效的方式解决问题:
只需索引到数组版本:
np.asarray(vals)[idx]
,vals
列表和idx
是数组。 或者使用np.take(vals, idx)
进行数组转换。