1

假设我们有两个数组:一些值,例如array([1.2, 1.4, 1.6]),和一些索引(比方说array([0, 2, 1])

array([[ 1.2,  0. ,  0. ],
       [ 0. ,  0. ,  1.4],
       [ 0. ,  1.6,  0. ]])

有没有办法在没有循环的情况下以一种很好、快速的方式做到这一点?

4

2 回答 2

2

a = zeros((3,3))
b = array([0, 2, 1])
vals = array([1.2, 1.4, 1.6])

你只需要索引它(在arangeor的帮助下r_):

>>> a[r_[:len(b)], b] = vals


array([[ 1.2,  0. ,  0. ],
       [ 0. ,  0. ,  1.4],
       [ 0. ,  1.6,  0. ]])
于 2012-10-30T03:12:29.950 回答
0

我们如何修改它以获得更高的维度?例如,a 是 5x4x3 数组,b 和 vals 是 5x4 数组。那么我们如何修改语句 a[r_[:len(b)],b] = vals 呢?

于 2013-11-29T03:49:34.727 回答