假设我们有两个数组:一些值,例如array([1.2, 1.4, 1.6])
,以及一些索引(比方说,array([0, 2, 1])
)我们的输出预计是放入更大数组的值,由指数“解决”,所以我们会得到
array([[ 1.2, 0. , 0. ],
[ 0. , 0. , 1.4],
[ 0. , 1.6, 0. ]])
有没有办法在没有循环的情况下以一种漂亮,快速的方式做到这一点?
答案 0 :(得分:2)
使用
a = zeros((3,3))
b = array([0, 2, 1])
vals = array([1.2, 1.4, 1.6])
您只需要对其进行索引(在arange
或r_
的帮助下):
>>> a[r_[:len(b)], b] = vals
array([[ 1.2, 0. , 0. ],
[ 0. , 0. , 1.4],
[ 0. , 1.6, 0. ]])
答案 1 :(得分:0)
我们如何修改更高尺寸?例如,a是5x4x3阵列,b和val是5x4阵列。 那么我们如何修改声明a [r _ [:len(b)],b] = vals?