やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

python3のnumpyのarrayのスライスで、値渡しをしたいとき

  • arrayのスライスについて。 arrayは参照渡しらしいです。
arr = np.arange(0,11)
print(arr[1:4])

array([1,2,3])

arr = np.arange(0,11)
arr[1:4] = 100   
print(arr)

array([0,100,100,100,4,5,6,7,8,9,10])

となります。

arr = np.arange(0,11)
arr2 = arr[1:4]
arr2 = 100
print(arr2)

array([100,100,100])

ここまでは良いと思うのですが、

print(arr)

とすると、 array[0,100,100,100,4,5,6,7,8,9,10] となります。 アレイは参照らしいです。 なので、値をコピーしたかったら、

arr2 = arr.copy
arr2[1:4] = 100
print(arr)

array([0,1,2,3,4,5,6,7,8,9,10])

です