; Form (engl. ''shape'') : Definiert die Dimensionen in jeder Indexausprägung („Achse") des Arrays und die Anzahl der Achsen (bzw. Indizes).
; Form (engl. ''shape'') : Definiert die Dimensionen in jeder Indexausprägung („Achse") des Arrays und die Anzahl der Achsen (bzw. Indizes).
; Schrittlängen (engl. ''strides''): Die Schrittlängen beschreiben für jede Achse, wie viele [[byte]]s man im linaren [[Speicher]] springen muss, wenn ein zu dieser Achse gehöriger Index um 1 erhöht wird. Für eine Matrix ist zum Beispiel wären das jeweils die Speicherabstände von zwei nebeneinanderliegenden Zeilen und Spalten.
; Schrittlängen (engl. ''strides''): Die Schrittlängen beschreiben für jede Achse, wie viele [[byte]]s man im linaren [[Speicher]] springen muss, wenn ein zu dieser Achse gehöriger Index um 1 erhöht wird. Für eine Matrix ist zum Beispiel wären das jeweils die Speicherabstände von zwei nebeneinanderliegenden Zeilen und Spalten.
[[File:The NumPy array data structure and its associated metadata fields.webp|thumb|Die NumPy Array Datenstruktur und assoziierte Metadaten-Felder]]
Diese Arrays erlauben es außerdem, von [[Allokation (Informatik)|allozierten]] [[Puffer (Informatik)|Puffern]] anderer Sprachen zu lesen, ohne Daten kopieren zu müssen. Mit [[C (Programmiersprache)|C]]/[[C++]]-, [[Cython]]- oder [[Fortran]]-Erweiterungen des CPython-Interpreters können so auch einfach weitere bestehende Numerikbibliotheken mitverwendet werden. Dieses Verhalten wird beispielsweise von SciPy genutzt, welches [[Wrapper (Software)|Wrapper]] für externe Bibliotheken wie [[Basic Linear Algebra Subprograms|BLAS]] oder [[LAPACK]] bereitstellt. NumPy bietet native Unterstützung für [[Memory Mapping]] der ndarrays.<ref name="cise" />
Diese Arrays erlauben es außerdem, von [[Allokation (Informatik)|allozierten]] [[Puffer (Informatik)|Puffern]] anderer Sprachen zu lesen, ohne Daten kopieren zu müssen. Mit [[C (Programmiersprache)|C]]/[[C++]]-, [[Cython]]- oder [[Fortran]]-Erweiterungen des CPython-Interpreters können so auch einfach weitere bestehende Numerikbibliotheken mitverwendet werden. Dieses Verhalten wird beispielsweise von SciPy genutzt, welches [[Wrapper (Software)|Wrapper]] für externe Bibliotheken wie [[Basic Linear Algebra Subprograms|BLAS]] oder [[LAPACK]] bereitstellt. NumPy bietet native Unterstützung für [[Memory Mapping]] der ndarrays.<ref name="cise" />
Version vom 22. Oktober 2020, 00:48 Uhr
Unterseite zum Entwerfen neuer Artikel oder Abschnitte
Die Kernfunktionalität von NumPy basiert auf der Datenstruktur „ndarray" (n-dimensionales Array), die auch als „NumPy Array" bezeichnet wird.[1][2] Dessen wesentliche Bestandteile sind ein Zeiger auf einen zusammenhängenden Speicherbereich zusammen mit Metadaten, welche die darin gespeicherten Daten beschreiben:[2]
Datenyp
Anders als in Pythons eigener List-Datenstruktur (welche konträr zu ihrem Namen eigentlich durch ein dynamisches Array verwirklicht ist) sind ndarrays homogen typisiert: Alle Elemente eines Arrays müssen vom selben Datentyp sein.
Form (engl. shape)
Definiert die Dimensionen in jeder Indexausprägung („Achse") des Arrays und die Anzahl der Achsen (bzw. Indizes).
Schrittlängen (engl. strides)
Die Schrittlängen beschreiben für jede Achse, wie viele bytes man im linaren Speicher springen muss, wenn ein zu dieser Achse gehöriger Index um 1 erhöht wird. Für eine Matrix ist zum Beispiel wären das jeweils die Speicherabstände von zwei nebeneinanderliegenden Zeilen und Spalten.
Die NumPy Array Datenstruktur und assoziierte Metadaten-Felder
Diese Arrays erlauben es außerdem, von alloziertenPuffern anderer Sprachen zu lesen, ohne Daten kopieren zu müssen. Mit C/C++-, Cython- oder Fortran-Erweiterungen des CPython-Interpreters können so auch einfach weitere bestehende Numerikbibliotheken mitverwendet werden. Dieses Verhalten wird beispielsweise von SciPy genutzt, welches Wrapper für externe Bibliotheken wie BLAS oder LAPACK bereitstellt. NumPy bietet native Unterstützung für Memory Mapping der ndarrays.[1]
↑ abStéfan van der Walt, S. Chris Colbert and Gaël Varoquaux: The NumPy array: a structure for efficient numerical computation. In: Computing in Science and Engineering. IEEE, 2011, arxiv:1102.1523.
↑ abc
Charles R. Harris, K. Jarrod Millman, Stéfan J. van, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, Robert Kern, Matti Picus, Stephan Hoyer, Marten H. van, Matthew Brett, Allan Haldane, Jaime Fernández del, Mark Wiebe, Pearu Peterson, Pierre Gérard-Marchant, Kevin Sheppard, Tyler Reddy, Warren Weckesser, Hameer Abbasi, Christoph Gohlke, Travis E. Oliphant: Array programming with NumPy. In: Nature. 585. Jahrgang, Nr.7825, 16. September 2020, S.357–362, doi:10.1038/s41586-020-2649-2 (nature.com).