1. Array programming with NumPy
- Author
-
Stefan van der Walt, Pauli Virtanen, David Cournapeau, Sebastian Berg, Matthew Brett, Eric Wieser, Tyler Reddy, Ralf Gommers, Matti Picus, Travis E. Oliphant, Pierre Gérard-Marchant, Allan Haldane, Jaime Fernández del Río, Hameer Abbasi, Julian Taylor, Warren Weckesser, Christoph Gohlke, Pearu Peterson, Kevin Sheppard, Stephan Hoyer, Marten H. van Kerkwijk, Nathaniel J. Smith, Robert Kern, Mark Wiebe, K. Jarrod Millman, Charles R. Harris, Millman, K. Jarrod [0000-0002-5263-5070], van der Walt, Stéfan J. [0000-0001-9276-1891], Gommers, Ralf [0000-0002-0300-3333], Picus, Matti [0000-0002-1771-9949], Hoyer, Stephan [0000-0002-5207-0380], Wiebe, Mark [0000-0003-3603-8038], Peterson, Pearu [0000-0001-7328-4305], Sheppard, Kevin [0000-0001-8700-2292], Gohlke, Christoph [0000-0001-8108-7707], Apollo - University of Cambridge Repository, Millman, K Jarrod [0000-0002-5263-5070], and van der Walt, Stéfan J [0000-0001-9276-1891]
- Subjects
FOS: Computer and information sciences ,639/705/1042 ,Computer science ,639/705/794 ,Interoperability ,639/705/117 ,Review Article ,Statistics - Computation ,ohjelmointikielet ,01 natural sciences ,03 medical and health sciences ,Software ,Software Design ,laskennallinen tiede ,0103 physical sciences ,FOS: Mathematics ,010303 astronomy & astrophysics ,Computation (stat.CO) ,030304 developmental biology ,computer.programming_language ,Solar physics ,0303 health sciences ,Multidisciplinary ,Application programming interface ,business.industry ,NumPy ,Computational science ,review-article ,Computational Biology ,Python (programming language) ,704/525/870 ,Computational neuroscience ,Programming paradigm ,Software design ,Computer Science - Mathematical Software ,631/378/116 ,139 ,Programming Languages ,Array programming ,ohjelmistokirjastot ,Software engineering ,business ,Mathematical Software (cs.MS) ,computer ,Mathematics ,Python - Abstract
Array programming provides a powerful, compact and expressive syntax for accessing, manipulating and operating on data in vectors, matrices and higher-dimensional arrays. NumPy is the primary array programming library for the Python language. It has an essential role in research analysis pipelines in fields as diverse as physics, chemistry, astronomy, geoscience, biology, psychology, materials science, engineering, finance and economics. For example, in astronomy, NumPy was an important part of the software stack used in the discovery of gravitational waves1 and in the first imaging of a black hole2. Here we review how a few fundamental array concepts lead to a simple and powerful programming paradigm for organizing, exploring and analysing scientific data. NumPy is the foundation upon which the scientific Python ecosystem is constructed. It is so pervasive that several projects, targeting audiences with specialized needs, have developed their own NumPy-like interfaces and array objects. Owing to its central position in the ecosystem, NumPy increasingly acts as an interoperability layer between such array computation libraries and, together with its application programming interface (API), provides a flexible framework to support the next decade of scientific and industrial analysis., NumPy is the primary array programming library for Python; here its fundamental concepts are reviewed and its evolution into a flexible interoperability layer between increasingly specialized computational libraries is discussed.
- Published
- 2020