# NumPy 1.16.1 Release Notes

The NumPy 1.16.1 release fixes bugs reported against the 1.16.0 release, and also backports several enhancements from master that seem appropriate for a release series that is the last to support Python 2.7. The wheels on PyPI are linked with OpenBLAS v0.3.4+, which should fix the known threading issues found in previous OpenBLAS versions.

Downstream developers building this release should use Cython >= 0.29.2 and, if using OpenBLAS, OpenBLAS > v0.3.4.

If you are installing using pip, you may encounter a problem with older installed versions of NumPy that pip did not delete becoming mixed with the current version, resulting in an `ImportError`. That problem is particularly common on Debian derived distributions due to a modified pip. The fix is to make sure all previous NumPy versions installed by pip have been removed. See #12736 for discussion of the issue. Note that previously this problem resulted in an `AttributeError`.

## Contributors

A total of 16 people contributed to this release. People with a “+” by their names contributed a patch for the first time.

- Antoine Pitrou

- Arcesio Castaneda Medina +

- Charles Harris

- Chris Markiewicz +

- Christoph Gohlke

- Christopher J. Markiewicz +

- Daniel Hrisca +

- EelcoPeacs +

- Eric Wieser

- Kevin Sheppard

- Matti Picus

- OBATA Akio +

- Ralf Gommers

- Sebastian Berg

- Stephan Hoyer

- Tyler Reddy

## Enhancements

- #12767: ENH: add mm->q floordiv

- #12768: ENH: port np.core.overrides to C for speed

- #12769: ENH: Add np.ctypeslib.as_ctypes_type(dtype), improve np.ctypeslib.as_ctypes

- #12773: ENH: add “max difference” messages to np.testing.assert_array_equal…

- #12820: ENH: Add mm->qm divmod

- #12890: ENH: add _dtype_ctype to namespace for freeze analysis

## Compatibility notes

- The changed error message emitted by array comparison testing functions may affect doctests. See below for detail.

- Casting from double and single denormals to float16 has been corrected. In some rare cases, this may result in results being rounded up instead of down, changing the last bit (ULP) of the result.

## New Features

### divmod operation is now supported for two `timedelta64` operands

The divmod operator now handles two `np.timedelta64` operands, with type signature `mm->qm`.

## Improvements

### Further improvements to `ctypes` support in `np.ctypeslib`

A new `numpy.ctypeslib.as_ctypes_type` function has been added, which can be used to converts a dtype into a best-guess `ctypes` type. Thanks to this new function, `numpy.ctypeslib.as_ctypes` now supports a much wider range of array types, including structures, booleans, and integers of non-native endianness.

### Array comparison assertions include maximum differences

Error messages from array comparison tests such as np.testing.assert_allclose now include “max absolute difference” and “max relative difference,” in addition to the previous “mismatch” percentage. This information makes it easier to update absolute and relative error tolerances.

## Changes

### `timedelta64 % 0` behavior adjusted to return `NaT`

The modulus operation with two `np.timedelta64` operands now returns `NaT` in the case of division by zero, rather than returning zero