同じビッグデータの作業中に少し問題が発生しました。しかし今のところ、ゼロで満たされた 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 ]])
しかし、上記のように配列全体を埋めています