2. NumPy 1.17 - the most significant release in years
◎New random number generators
(a complete overhaul of numpy.random)
◎New Fourier transform implementations
(a complete overhaul of numpy.fft)
◎The __array_function__ protocol became
enabled by default.
2
3. Vastly improved random number generators
Multiple new generators, faster & higher
statistical quality. Plus:
• Parallel/distributed capabilities (3 methods)
• Extensible infrastructure - plug in your own
bit-generator
• Can be used from Numba, and (in 1.18)
from Cython or C
3
6. The NumPy array protocols - goals
6
Separate NumPy API from NumPy “execution engine”
Allow other libraries (Dask, CuPy, PyTorch, …) to reuse
the NumPy API
Bigger picture: avoid or reduce ecosystem
fragmentation (we don’t want to see a reimplementation of SciPy for
PyTorch, SciPy for Tensorflow, etc.)
10. Array protocols — using the NumPy API with distributed
arrays via Dask
10
11. Fourier transforms - faster & more accurate
All FFT functions in NumPy and SciPy reimplemented.
11
12. scipy.fft — first new SciPy submodule in a decade
• API changes for consistency with NumPy
• Based on PyPocketfft (modern C++, close
to performance of FFTW)
• Bluestein algorithm: accurate & fast also
for prime-length arrays
• Context managers for backend selection
and multi-threading support
12