The NumPy Array: A Structure for Efficient Numerical Computation

  title={The NumPy Array: A Structure for Efficient Numerical Computation},
  author={S. Walt and S. Colbert and G. Varoquaux},
  journal={Computing in Science \& Engineering},
In the Python world, NumPy arrays are the standard representation for numerical data and enable efficient implementation of numerical computations in a high-level language. As this effort shows, NumPy performance can be improved through three techniques: vectorizing calculations, avoiding copying data in memory, and minimizing operation counts. 
Dask & Numba: Simple libraries for optimizing scientific python code
  • James Crist
  • Computer Science
  • 2016 IEEE International Conference on Big Data (Big Data)
  • 2016
Numba, a compiler for a subset of the Python language, and Dask, a flexible parallel programming library are described, to allow numeric Python code to be optimized incrementally, requiring minimal changes. Expand
Battling Memory Requirements of Array Programming Through Streaming
This paper presents a solution to this problem using array streaming, implemented in the automatic parallelization high-performance framework Bohrium, that makes it possible to use array programming in Python/NumPy code directly, even when the apparent memory requirement exceeds the machine capacity. Expand
Fast Linear Transformations in Python
This paper introduces a new free library for the Python programming language, which provides a collection of structured linear transforms, that are not represented as explicit two dimensional arraysExpand
Pythran: Crossing the Python Frontier
  • Serge Guelton
  • Computer Science
  • Computing in Science & Engineering
  • 2018
This column takes a fresh look at the problem and introduces Pythran, a new optimization tool designed to efficiently handle unmodified Python code. Expand
Automatic acceleration of Numpy applications on GPUs and multicore CPUs
This work proposes an approach that records the sequence of Numpy operations for defered execution and allows us to seamlessly target both multicore CPUs and NVIDIA GPUs, thereby porting the Numpy application to these architectures without changing the user program. Expand
Awkward Array: JSON-like data, NumPy-like idioms
Awkward Array provides a similar interface for JSON-like data: slicing, masking, broadcasting, and performing vectorized math on the attributes of objects, unequal-length nested lists, and heterogeneous data types. Expand transformation-based code generation for GPUs and CPUs
TLDR, a programming system embedded in Python, meets this challenge by defining a data model for array-style computations and a library of transformations that operate on this model, providing a convenient way to capture, parametrize, and re-unify the growth among code variants. Expand
Cython: The Best of Both Worlds
Cython is a Python language extension that allows explicit type declarations and is compiled directly to C. As such, it addresses Python's large overhead for numerical loops and the difficulty ofExpand
VisPy: Harnessing The GPU For Fast, High-Level Visualization
The main features, architecture, and techniques used in VisPy are introduced, which enable the GPU to provide fast, interactive, and beautiful visualizations in a high-level API. Expand
Integrating productivity-oriented programming languages with high-performance data structures
Julia provides sufficient performance to bridge the performance gap between productivity-oriented languages and low-level languages for complex memory intensive computation tasks such as graph traversal and the first parallel integration on the productivity- oriented language side for graph analysis is presented. Expand


IPython: A System for Interactive Scientific Computing
The IPython project provides on enhanced interactive environment that includes, among other features, support for data visualization and facilities for distributed and parallel computation. Expand
Optimized Symbolic Expressions and GPU Metaprogramming with Theano
  • Proceedings of the 9th Python in Science Conference (SciPy2010)
  • 2010
C-Extensions for Python
  • C-Extensions for Python
NumPy is a volunteer effort
  • NumPy is a volunteer effort
NumPy's documentation is maintained using a WikiPedia-like community forum
  • Discussions take place on the project mailing list
NumPy's documentation is maintained using a WikiPedia-like community forum, available at Discussions take place on the project mailing list
  • NumPy's documentation is maintained using a WikiPedia-like community forum, available at Discussions take place on the project mailing list