NumPy 1.19.0 Release Notes¶
Code compatibility with Python versions < 3.5 (including Python 2) was dropped from both the python and C code. The shims in numpy.compat will remain to support third-party packages, but they may be deprecated in a future release.
dtype=object for ragged input¶
np.array([[1, [1, 2, 3]]) will issue a
per NEP 34. Users should explicitly use
dtype=object to avoid the
shape=0 to factory functions in
numpy.rec is deprecated¶
0 is treated as a special case and is aliased to
None in the functions:
0 will not be special cased, and will be treated as an array
length like any other integer.
Scalar promotion in
The promotion of mixed scalars and arrays in
has been changed to adhere to those used by
This means that input such as
(1000, np.array(, dtype=np.uint8)))
will now return
uint16 dtypes. In most cases the behaviour is unchanged.
Note that the use of this C-API function is generally discouraged.
This also fixes
np.choose to behave the same way as the rest of NumPy
in this respect.
Fasttake and fastputmask slots are deprecated and NULL’ed¶
The fasttake and fastputmask slots are now never used and must always be set to NULL. This will result in no change in behaviour. However, if a user dtype should set one of these a DeprecationWarning will be given.
np.ediff1d casting behaviour with
np.ediff1d now uses the
"same_kind" casting rule for
to_begin arguments. This
ensures type safety except when the input array has a smaller
integer type than
In rare cases, the behaviour will be more strict than it was
previously in 1.16 and 1.17. This is necessary to solve issues
with floating point NaN.
As part of the continued removal of Python 2 compatibility,
multiarray.int_asbuffer was removed. On Python 3, it threw a
NotImplementedError and was unused internally. It is expected that there
are no downstream use cases for this method with Python 3.
numpy.distutils.compat has been removed¶
This module contained only the function
get_exception(), which was used as:
try: ... except Exception: e = get_exception()
Its purpose was to handle the change in syntax introduced in Python 2.6, from
except Exception, e: to
except Exception as e:, meaning it was only
necessary for codebases supporting Python 2.5 and older.
C API changes¶
Better support for
const dimensions in API functions¶
The following functions now accept a constant array of
Previously the caller would have to cast away the const-ness to call these functions.
Const qualify UFunc inner loops¶
UFuncGenericFunction now expects pointers to const
strides as arguments. This means inner loops may no longer modify
strides. This change leads to an
incompatible-pointer-types warning forcing users to either ignore
the compiler warnings or to const qualify their own loop signatures.
Remove handling of extra argument to
A code path and test have been in the code since NumPy 0.4 for a two-argument
__array__(dtype=None, context=None). It was activated when
However that variant is not documented, and it is not clear what the intention
was for its use. It has been removed.