NumPy 1.16.4 Release Notes¶
The NumPy 1.16.4 release fixes bugs reported against the 1.16.3 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.7-dev, which should fix issues on Skylake series cpus.
Downstream developers building this release should use Cython >= 0.29.2 and, if using OpenBLAS, OpenBLAS > v0.3.7. The supported Python versions are 2.7 and 3.5-3.7.
New deprecations¶
Writeable flag of C-API wrapped arrays¶
When an array is created from the C-API to wrap a pointer to data, the only
indication we have of the read-write nature of the data is the writeable
flag set during creation. It is dangerous to force the flag to writeable. In
the future it will not be possible to switch the writeable flag to True
from python. This deprecation should not affect many users since arrays
created in such a manner are very rare in practice and only available through
the NumPy C-API.
Compatibility notes¶
Potential changes to the random stream¶
Due to bugs in the application of log to random floating point numbers,
the stream may change when sampling from np.random.beta
, np.random.binomial
,
np.random.laplace
, np.random.logistic
, np.random.logseries
or
np.random.multinomial
if a 0 is generated in the underlying MT19937 random stream.
There is a 1 in chance of this occurring, and so the probability that
the stream changes for any given seed is extremely small. If a 0 is encountered in the
underlying generator, then the incorrect value produced (either np.inf
or np.nan
) is now dropped.
Changes¶
numpy.lib.recfunctions.structured_to_unstructured
does not squeeze single-field views¶
Previously structured_to_unstructured(arr[['a']])
would produce a squeezed
result inconsistent with structured_to_unstructured(arr[['a', b']])
. This
was accidental. The old behavior can be retained with
structured_to_unstructured(arr[['a']]).squeeze(axis=-1)
or far more simply,
arr['a']
.
Contributors¶
A total of 10 people contributed to this release. People with a “+” by their names contributed a patch for the first time.
Charles Harris
Eric Wieser
Dennis Zollo +
Hunter Damron +
Jingbei Li +
Kevin Sheppard
Matti Picus
Nicola Soranzo +
Sebastian Berg
Tyler Reddy
Pull requests merged¶
A total of 16 pull requests were merged for this release.
#13392: BUG: Some PyPy versions lack PyStructSequence_InitType2.
#13394: MAINT, DEP: Fix deprecated
assertEquals()
#13396: BUG: Fix structured_to_unstructured on single-field types (backport)
#13549: BLD: Make CI pass again with pytest 4.5
#13552: TST: Register markers in conftest.py.
#13559: BUG: Removes ValueError for empty kwargs in arraymultiter_new
#13560: BUG: Add TypeError to accepted exceptions in crackfortran.
#13561: BUG: Handle subarrays in descr_to_dtype
#13562: BUG: Protect generators from log(0.0)
#13563: BUG: Always return views from structured_to_unstructured when…
#13564: BUG: Catch stderr when checking compiler version
#13565: BUG: longdouble(int) does not work
#13587: BUG: distutils/system_info.py fix missing subprocess import (#13523)
#13620: BUG,DEP: Fix writeable flag setting for arrays without base
#13641: MAINT: Prepare for the 1.16.4 release.
#13644: BUG: special case object arrays when printing rel-, abs-error