5

同じビッグデータの作業中に少し問題が発生しました。しかし今のところ、ゼロで満たされた NumPy 配列があると仮定しましょう

>>> x = np.zeros((3,3))
>>> x
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

ここで、これらのゼロの一部を特定の値に変更したいと考えています。変更したいセルのインデックスを指定しました。

>>> y = np.array([[0,0],[1,1],[2,2]])
>>> y 
array([[0, 0],
       [1, 1],
       [2, 2]])

そして、次のように、目的の(今のところランダムな)番号の配列を取得しました

>>> z = np.array(np.random.rand(3))
>>> z
array([ 0.04988558,  0.87512891,  0.4288157 ])

だから今、私は次のことができると思いました:

>>> x[y] = z

しかし、このように配列全体を埋めるよりも

>>> x
array([[ 0.04988558,  0.87512891,  0.4288157 ],
       [ 0.04988558,  0.87512891,  0.4288157 ],
       [ 0.04988558,  0.87512891,  0.4288157 ]])

しかし、私は得ることを望んでいました

>>> x
array([[ 0.04988558,           0,          0 ],
       [          0,  0.87512891,          0 ],
       [          0,           0,  0.4288157 ]])

編集

今、私は対角線のインデックスを使用しましたが、私のインデックスが対角線だけではない場合はどうなりますか? 私は次の作品を望んでいました:

>>> y = np.array([[0,1],[1,2],[2,0]])
>>> x[y] = z
>>> x
>>> x
array([[          0,  0.04988558,          0 ],
       [          0,           0, 0.87512891 ],
          0.4288157,           0,          0 ]])

しかし、上記のように配列全体を埋めています

4

1 に答える 1