假设我们有两个数组:一些值,例如array([1.2, 1.4, 1.6])
,和一些索引(比方说array([0, 2, 1])
,
array([[ 1.2, 0. , 0. ],
[ 0. , 0. , 1.4],
[ 0. , 1.6, 0. ]])
有没有办法在没有循环的情况下以一种很好、快速的方式做到这一点?
和
a = zeros((3,3))
b = array([0, 2, 1])
vals = array([1.2, 1.4, 1.6])
你只需要索引它(在arange
or的帮助下r_
):
>>> a[r_[:len(b)], b] = vals
array([[ 1.2, 0. , 0. ],
[ 0. , 0. , 1.4],
[ 0. , 1.6, 0. ]])
我们如何修改它以获得更高的维度?例如,a 是 5x4x3 数组,b 和 vals 是 5x4 数组。那么我们如何修改语句 a[r_[:len(b)],b] = vals 呢?