TY - JOUR TI - Array programming with NumPy AU - Charles R. Harris AU - K. Jarrod Millman AU - Stéfan J. van der Walt AU - Ralf Gommers AU - Pauli Virtanen AU - David Cournapeau AU - Eric Wieser AU - Julian Taylor AU - Sebastian Berg AU - Nathaniel J. Smith AU - Robert Kern AU - Matti Picus AU - Stephan Hoyer AU - Marten H. van Kerkwijk AU - Matthew Brett AU - Allan Haldane AU - Jaime Fernández del Río AU - Mark Wiebe AU - Pearu Peterson AU - Pierre Gérard-Marchant AU - Kevin Sheppard AU - Tyler Reddy AU - Warren Weckesser AU - Hameer Abbasi AU - Christoph Gohlke AU - Travis E. Oliphant PY - 2020 JO - Nature DO - 10.1038/s41586-020-2649-2 UR - https://doi.org/10.1038/s41586-020-2649-2 AB - 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 waves 1 and in the first imaging of a black hole 2 . 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. ER -