NumPy lacked an optimized minmax function, so we wrote our own. At Nomono, we use it for audio processing, but it can be applied any kind of float32 ndarray.
- Written in C and takes advantage of AVX/AVX512 for speed
- Roughly 2.3x speedup compared to the numpy amin+amax equivalent (tested on Intel CPU with numpy 1.24-1.26)
- The fast implementation is tailored for float32 arrays that are C-contiguous, F-contiguous or 1D strided. Strided arrays with ndim >= 2 get processed with numpy.amin and numpy.amax, so no perf gain there. There is also a fast implementation for contiguous int16 arrays.
$ pip install numpy-minmax
import numpy_minmax
import numpy as np
arr = np.arange(1337, dtype=np.float32)
min_val, max_val = numpy_minmax.minmax(arr) # 0.0, 1336.0
- Optimize (with AVX) the processing of contiguous int16 arrays. ~2.3x speedup compared to 0.3.0
For the complete changelog, go to CHANGELOG.md
- Install dev/build/test dependencies as denoted in pyproject.toml
CC=clang pip install -e .
pytest
- Install diplib
pip install diplib
python scripts/perf_benchmark.py
This library is maintained/backed by Nomono, a Norwegian audio AI startup.