はちょうどこの操作を行います:
>>> import numpy as np
>>> arr = np.array([1,2,3,4,5,6,7,8,9,10])
>>> arr
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> arr1=arr[3:8]
>>> arr1
array([4, 5, 6, 7, 8])
上記のケースでは、Pythonでの代入文を使用してオブジェクトをコピーせず、ターゲットとオブジェクトの間にバインディングを作成します。
シャローコピーを行うには、.copy()
を使用します。
(可能な限り)新しい複合オブジェクトを作成し、次に浅いコピーは、元に見つかったオブジェクトにその中に参照を挿入します。
すなわち
>>> arr1=arr[3:8].copy()
>>> arr1
array([4, 5, 6, 7, 8])
あなたは深いコピーを行うためにdeepcopy()
を使用することができます。
新しい複合オブジェクトを作成し、次に、再帰的に、原稿に検出されたオブジェクトのそれにコピーを挿入ディープコピー。
すなわち
>>> arr2 = deepcopy(arr[3:8])
>>> lst2
array([4, 5, 6, 7, 8])
さらに参照:
copy — Shallow and deep copy operations
Shallow and Deep Copy
'arr [3:8]'または 'arr [3:8] .copy()'はコピーではなくビューであることを望みます。 – Jaime