なぜスライス時にnumpy.array
がPythonのリストとデフォルト配列と異なる動作をしますか?numpy.arrayスライシング動作
1)文を使用すると、b = a[1:3]
文で新しいリストオブジェクトが作成され、b
を変更してもa
は変更されません。 array.array
を使用して
>>> a = [1,2,3,4]
>>> b = a[1:3]
>>> print(b)
[2, 3]
>>> b[0] = -17
>>> print(b)
[-17, 3]
>>> print(a)
[1, 2, 3, 4]
2):文b = a[1:3]
は再び新しい配列オブジェクトを作成し、b
を変更することはa
は変更されません。
>>> import array
>>> a = array.array('i', [1,2,3,4])
>>> b = a[1:3]
>>> print(b)
array('i', [2, 3])
>>> b[0] = -17
>>> print(b)
array('i', [-17, 3])
>>> print(a)
array('i', [1, 2, 3, 4])
3)numpy.array
を使用して:文b = a[1:3]
は、元のリストの値を参照するようで、それは同様に修正しない修正!
>>> import numpy
>>> a = numpy.array([1,2,3,4])
>>> b = a[1:3]
>>> print(b)
[2 3]
>>> b[0] = -17
>>> print(b)
[-17 3]
>>> print(a)
[ 1 -17 3 4]
質問:この現象はなぜnumpy
にありますか?
明確な説明に感謝します。 –