Amongst other things, the new version allows developers to compute the number of 1-bits in an integer through the new
bit_count function, use comment blocks to generate C/C++ API reference documentation, and keep the dimensions of reduced axes when using
argmax in combination with new
interpolation= keyword argument in
percentile has been replaced by a new
method= one, which is said to support 13 methods that align with scientific literature, the R language, and previously available approaches. NumPy’s floating point and integer types have been fitted with a
float.is_integer implementation since the last release, and
numpy.number classes are now subscriptable for Python 3.9 or newer, which should make the use of certain expressions more straightforward.
The latest iteration also quenches some more particular needs, by providing things like an option to configure allocators for data segments of a
ndarray, which has been included to help realise hardware-specific optimisations. The addition was spurred by teams running into performance degradations using the regular memory management strategy, though most regular users will probably keep accepting the bottleneck for the sake of simplicity.
Meanwhile, the plugin for static type checker mypy has been extended to be able to set the platform-specific
c_intp precision which is for instance utilised as the data type for
Developers who like to get in on new additions early, can take a look at the initial implementation of an enhancement proposal that seeks to support the Python array API standard. The still experimental feature allows users to make sure their code is portable and works with a variety of other multidimensional array libraries such as TensorFlow and PyTorch. There’s also a new header (
experimental_public_dtype_api.h) available to facilitate investigations into the upcoming APIs for user DType support and universal functions.
Apart from this, NumPy 1.22 marks the complete annotation of the main NumPy namespace, a process that started in the runup to the 1.20 release last year. Other sub-packages that have since been fitted with annotations include
In order to have NumPy 1.22 work properly, the library needs Python 3.8 or higher to be installed, as support for Python 3.7 was dropped with the release.
Before updating to the new version, developers should also be aware that passing boolean
kth values to
numpy.argpartition isn’t an option anymore and that previously deprecated
mafromtxt have been removed for good in v1.22. Other changes mean that the library will throw a TypeError should floor division of complex types be attempted, and produce the same output class as the base function when
numpy.vectorize is used.