scispace - formally typeset
Open AccessJournal ArticleDOI

Array programming with NumPy

Reads0
Chats0
TLDR
In this paper, the authors review how a few fundamental array concepts lead to a simple and powerful programming paradigm for organizing, exploring and analysing scientific data, and their evolution into a flexible interoperability layer between increasingly specialized computational libraries is discussed.
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.

read more

Content maybe subject to copyright    Report

Citations
More filters
Journal Article

The Observation of Gravitational Waves from a Binary Black Hole Merger

TL;DR: The first direct detection of gravitational waves and the first observation of a binary black hole merger were reported in this paper, with a false alarm rate estimated to be less than 1 event per 203,000 years, equivalent to a significance greater than 5.1σ.

seaborn: Statistical data visualization

TL;DR: Seaborn as discussed by the authors is a library for making statistical graphics in Python that provides a high-level interface to matplotlib and integrates closely with pandas data structures, which makes it easy to translate questions about data into graphics that can answer them.
Journal ArticleDOI

Cellpose: a generalist algorithm for cellular segmentation

TL;DR: This work introduces a generalist, deep learning-based segmentation method called Cellpose, which can precisely segment cells from a wide range of image types and does not require model retraining or parameter adjustments.
References
More filters
Journal ArticleDOI

Being Sensitive to Uncertainty

TL;DR: This survey introduces the application, implementation, and underlying principles of sensitivity and uncertainty quantification inredictive modeling.
Journal ArticleDOI

The Ziggurat Method for Generating Random Variables

TL;DR: In this article, a new version of the ziggurat method for generating a random variable from a given decreasing density is presented, which is faster and simpler than the original, and will produce, for example, normal or exponential variates at the rate of 15 million per second with a C version on a 400MHz PC.
Journal ArticleDOI

xarray: N-D labeled arrays and datasets in Python

TL;DR: This approach combines an application programing interface (API) inspired by pandas with the Common Data Model for self-described scientific data to provide a toolkit and data structures for N-dimensional labeled arrays.
Proceedings ArticleDOI

The rust language

TL;DR: Rust is a new programming language for developing reliable and efficient systems that provides strong guarantees about isolation, concurrency, and memory safety, and offers a clear performance model, making it easier to predict and reason about program efficiency.
Proceedings ArticleDOI

Parallel random numbers: as easy as 1, 2, 3

TL;DR: It is demonstrated that independent, keyed transformations of counters produce a large alternative class of PRNGs with excellent statistical properties, ideally suited to modern multi- core CPUs, GPUs, clusters, and special-purpose hardware.
Related Papers (5)