========================= NumPy 2.0.0 Release Notes ========================= [Possibly 1.7.0 release notes, as ABI compatibility is still being maintained] Highlights ========== New features ============ Mask-based NA missing values ---------------------------- Support for NA missing values similar to those in R has been implemented. This was done by adding optional NA masks to the core array object. While a significant amount of the NumPy functionality has been extended to support NA masks, not everything is yet supported. Here is a list of things that do and do not work with NA values: What works with NA: * Basic indexing and slicing, as well as full boolean mask indexing. * All element-wise ufuncs. * UFunc.reduce methods, with a new skipna parameter. * Array methods: + ndarray.clip, ndarray.min, ndarray.max, ndarray.sum, ndarray.prod, ndarray.conjugate, ndarray.diagonal What doesn't work with NA: * Fancy indexing, such as with lists and partial boolean masks. * UFunc.reduce of multi-dimensional arrays, with skipna=True and a ufunc that doesn't have an identity. * UFunc.accumulate, UFunc.reduceat. * np.logical_and, np.logical_or, np.all, and np.any don't satisfy the rules NA | True == True and NA & False == False yet. * Array methods: + ndarray.argmax, ndarray.argmin, Custom formatter for printing arrays ------------------------------------ Changes ======= The default casting rule for UFunc out= parameters has been changed from 'unsafe' to 'same_kind'. Most usages which violate the 'same_kind' rule are likely bugs, so this change may expose previously undetected errors in projects that depend on NumPy. The functions np.diag, np.diagonal, and .diagonal now return a view into the original array instead of making a copy. This makes these functions more consistent with NumPy's general approach of taking views where possible, and performs much faster as well. Deprecations ============ Specifying a custom string formatter with a `_format` array attribute is deprecated. The new `formatter` keyword in ``numpy.set_printoptions`` or ``numpy.array2string`` can be used instead.