Es gibt ein paar Fragen zu SO über die Überprüfung, ob der numpy.reshape
Aufruf eine Kopie zurückgegeben hat oder nicht [1, 2]. Diese Fragen werden im Allgemeinen aufgrund der vagen Warnung des Dokuments gestellt:Warum würde NumPy reshape() ein neues Array erstellen und warum könnte die Reihenfolge nicht beibehalten werden?
Dies wird ein neues Ansichtsobjekt, wenn möglich; Andernfalls wird es eine Kopie sein.
Ich frage mich, unter welchen Umständen wird NumPy eine Kopie zurückgeben? In jedem 2D-Anruf, den ich getestet habe, zeigt die Methode aus der Antwort des Benutzers jterrace in 2, dass die Speicherbasis dieselbe ist (d. H. Keine Kopie). Ist es nur für höherdimensionale reshape
, dass eine Kopie notwendig sein kann?
Zusätzlich informiert der zweite Teil der Warnung von dem docs der Benutzer, dass:
... es gibt keine Garantie für das Speicherlayout ist (C- oder aus Fortran zusammenhängenden) des zurückgegebenen Arrays.
Mit anderen Worten, Sie können nach Zeilenmajor fragen, aber Sie könnten Spalte-Hauptausgabe erhalten. Behebt dies nicht den ganzen Zweck des order
Parameters? Wann würde dieser Fall entstehen?
Mit anderen Worten, um das gewünschte * Speicherlayout * zu erhalten, müsste man es explizit in eine Kopie im Speicher schreiben? – marcman
Um zu erarbeiten, dass die letzte Umformung "Array ([1, 2, 4, 5])", eine Teilmenge des ursprünglichen "[1,2,3,4,5,6]" erzeugt. – hpaulj
@marcman: Sie müssten 'numpy.copy' oder etwas aufrufen. – user2357112