Pre-NumPy fragmentation
In the early 2000s numerical computing in Python was fragmented: Numeric (1995, Jim Hugunin) and numarray (2001, STScI) were two array libraries with divergent APIs; the scientific community was split.
Travis Oliphant (then at Brigham Young University, later co-founder of Enthought and Continuum Analytics / Anaconda) unifies the two in 2005-2006 as NumPy. Version 1.0 is released on 25 October 2006. BSD 3-Clause licence.
ndarray
NumPy’s core is ndarray — homogeneous n-dimensional array:
- Fixed data type (float32, int64, etc.) — more efficient than Python lists
- Multi-dimensional shape — 2D matrices, 3D+ tensors
- Broadcasting — operations between compatible-shaped arrays
- Vectorised operations — element-wise operations without Python for loops
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])
print(a + b) # broadcasting: [[11,22],[13,24]]
print(a @ b) # matrix multiply: [50, 110]
print(np.linalg.inv(a)) # matrix inverse
Operators are implemented in C + BLAS/LAPACK, 10-100x faster than equivalent Python loops.
The scientific ecosystem
NumPy is born to become the base of a broader stack:
- SciPy (Eric Jones, Travis Oliphant, Pearu Peterson, 2001+) — advanced numerical algorithms
- matplotlib (John Hunter, 2003) — visualisation
- SymPy — symbolic computation
Concrete adoption will depend on building a coherent ecosystem around ndarray.
Funding
NumPy is maintained by volunteers and Travis Oliphant, without dedicated funding structure.
In the Italian context
In Italian scientific research labs Python is entering as a modern alternative to MATLAB and Fortran for rapid prototyping. NumPy is the component that makes this choice plausible.
References: NumPy 1.0 (25 October 2006). Travis Oliphant. Unification of Numeric (1995) and numarray (2001). BSD 3-Clause licence. BLAS/LAPACK backend.
