Warum verhält sich numpy.array
anders als Pythons Liste und Standard-Arrays, wenn es um Slicen geht? Bitte beachten Sie die folgenden Beispiele:numpy.array Slicing Verhalten
1) Verwenden von Listen: Die Anweisung b = a[1:3]
erstellt ein neues Listenobjekt und das Ändern b
ändert nicht a
.
>>> 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) mit array.array
: die Aussage b = a[1:3]
einmal schafft wieder ein neues Array-Objekt, und b
Modifizierung verändert nicht 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) mit numpy.array
: die Anweisung b = a[1:3]
die Werte der ursprünglichen Liste zu verweisen scheint, und ändert es auch nicht ändern!
Die Frage ist: Warum ist dieses Verhalten in numpy
vorhanden?
Vielen Dank für die klare Erklärung. –