  In the Python world, NumPy arrays are the standard representation for
numerical data. Here, we show how these arrays enable efficient implementation
of numerical computations in a high-level language. Overall, three techniques
are applied to improve performance: vectorizing calculations, avoiding copying
data in memory, and minimizing operation counts. We first present the NumPy
array structure, then show how to use it for efficient computation, and finally
how to share array data with other libraries.
