Benutzer:Elimik31/Artikelwerkstatt
Unterseite zum Entwerfen neuer Artikel oder Abschnitte
Die ndarray-Datenstruktur
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 sind NumPy Arrays 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 linearen Speicher springen muss, wenn ein zu dieser Achse gehöriger Index um 1 erhöht wird, zum Beispiel um zwischen zwei Zeilen oder zwei Spalten zu springen.
Diese Arrays erlauben es außerdem, von allozierten Puffern 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]
- ↑ a b Sté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.
- ↑ a b c 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).