numpyを使わずに多次元配列を作って、その要素に対して四則演算してみたら
a = [[0] * 5] * 5 a[0][0] += 1 print(a) # out:[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
みたいになった
想定としてはこんな感じ↓
# out:[[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
どうやらpythonで初期化をする時に*
を使うとポインタを複製してしまうらしい。
なので、こんな感じで一つ一つ初期化したらうまくいったよというメモ
b = [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ] b[0][0] += 1 print(b) # out:[[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]