Chapter 9. NumPy: Thinking in Arrays

At the core of most computational physics problems lives an array. From the physics side, arrays are a natural way to describe numerical and discretized problems. This is because geometry may be chopped up into tetrahedrons (pyramids) or hexahedrons (cubes), and arrays may be used to represent scalar or vector values that live at every point in three-dimensional space. Furthermore, operations on arrays can be used to represent or approximate calculus operations, such as integration or derivatives. From the software side, an array is a contiguous block of memory where every element has the same type and layout. From both a physical and a computational perspective, arrays are concise, beautiful, and useful.

Every programing language that is serious about scientific computing has a notion of an array data language, either built into the language’s core utilities or available as a third-party package. Since an array is essentially just a sequence of bits, the array data language adds semantics for handling arrays that are native to the host language while taking advantage of the fact that you know you have an unbroken sequence of bits.

Some languages, such as MATLAB and IDL, are centered around the array data language concept. Other general-purpose languages, such as Fortran, are meant for everyday programming but support powerful array constructs natively. In other generic languages, the reference array implementations come as projects external ...

Get Effective Computation in Physics now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.