NumPy 2.1.0 Release Notes#


We’ll choose highlights for this release near the end of the release cycle.


  • The fix_imports keyword argument in is deprecated. Since NumPy 1.17, uses a pickle protocol that no longer supports Python 2, and ignored fix_imports keyword. This keyword is kept only for backward compatibility. It is now deprecated.


Expired deprecations#

C API changes#

API symbols now hidden but customizable#

NumPy now defaults to hide the API symbols it adds to allow all NumPy API usage. This means that by default you cannot dynamically fetch the NumPy API from another library (this was never possible on windows).

If you are experiencing linking errors related to PyArray_API or PyArray_RUNTIME_VERSION, you can define the NPY_API_SYMBOL_ATTRIBUTE to opt-out of this change.

If you are experiencing problems due to an upstream header including NumPy, the solution is to make sure you #include "numpy/ndarrayobject.h" before their header and import NumPy yourself based on Including and importing the C API.


New Features#


histogram auto-binning now returns bin sizes >=1 for integer input data#

For integer input data, bin sizes smaller than 1 result in spurious empty bins. This is now avoided when the number of bins is computed using one of the algorithms provided by histogram_bin_edges.


Performance improvements and changes#

  • now uses pickle protocol version 4 for saving arrays with object dtype, which allows for pickle objects larger than 4GB and improves saving speed by about 5% for large arrays.



  • As numpy.vecdot is now a ufunc it has a less precise signature. This is due to the limitations of ufunc’s typing stub.