1

2つの配列があるとします。たとえば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])

インデックスを作成する必要があります(arangeまたはの助けを借りて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 に答える