numpy

The fundamental package for scientific computing with Python.

OTHER License

Downloads
343M
Stars
26.2K
Committers
1.8K

Bot releases are hidden (Show)

numpy -

Published by charris almost 3 years ago

NumPy 1.22.0 Release Notes

NumPy 1.22.0 is a big release featuring the work of 152 contributers
spread over 602 pull requests. There have been many improvements,
highlights are:

  • Annotations of the main namespace are essentially complete. Upstream
    is a moving target, so there will likely be further improvements,
    but the major work is done. This is probably the most user visible
    enhancement in this release.
  • A preliminary version of the proposed Array-API is provided. This is
    a step in creating a standard collection of functions that can be
    used across application such as CuPy and JAX.
  • NumPy now has a DLPack backend. DLPack provides a common interchange
    format for array (tensor) data.
  • New methods for quantile, percentile, and related functions. The
    new methods provide a complete set of the methods commonly found in
    the literature.
  • A new configurable allocator for use by downstream projects.

These are in addition to the ongoing work to provide SIMD support for
commonly used functions, improvements to F2PY, and better documentation.

The Python versions supported in this release are 3.8-3.10, Python 3.7
has been dropped. Note that 32 bit wheels are only provided for Python
3.8 and 3.9 on Windows, all other wheels are 64 bits on account of
Ubuntu, Fedora, and other Linux distributions dropping 32 bit support.
All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix
the occasional problems encountered by folks using truly huge arrays.

Expired deprecations

Deprecated numeric style dtype strings have been removed

Using the strings "Bytes0", "Datetime64", "Str0", "Uint32",
and "Uint64" as a dtype will now raise a TypeError.

(gh-19539)

Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

numpy.loads was deprecated in v1.15, with the recommendation that
users use pickle.loads instead. ndfromtxt and mafromtxt were both
deprecated in v1.17 - users should use numpy.genfromtxt instead with
the appropriate value for the usemask parameter.

(gh-19615)

Deprecations

Use delimiter rather than delimitor as kwarg in mrecords

The misspelled keyword argument delimitor of
numpy.ma.mrecords.fromtextfile() has been changed to delimiter,
using it will emit a deprecation warning.

(gh-19921)

Passing boolean kth values to (arg-)partition has been deprecated

numpy.partition and numpy.argpartition would previously accept
boolean values for the kth parameter, which would subsequently be
converted into integers. This behavior has now been deprecated.

(gh-20000)

The np.MachAr class has been deprecated

The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have
been deprecated. Users are encouraged to access the property if interest
directly from the corresponding numpy.finfo attribute.

(gh-20201)

Compatibility notes

Distutils forces strict floating point model on clang

NumPy now sets the -ftrapping-math option on clang to enforce correct
floating point error handling for universal functions. Clang defaults to
non-IEEE and C99 conform behaviour otherwise. This change (using the
equivalent but newer -ffp-exception-behavior=strict) was attempted in
NumPy 1.21, but was effectively never used.

(gh-19479)

Removed floor division support for complex types

Floor division of complex types will now result in a TypeError

>>> a = np.arange(10) + 1j* np.arange(10)
>>> a // 1
TypeError: ufunc 'floor_divide' not supported for the input types...

(gh-19135)

numpy.vectorize functions now produce the same output class as the base function

When a function that respects numpy.ndarray subclasses is vectorized
using numpy.vectorize, the vectorized function will now be
subclass-safe also for cases that a signature is given (i.e., when
creating a gufunc): the output class will be the same as that returned
by the first call to the underlying function.

(gh-19356)

Python 3.7 is no longer supported

Python support has been dropped. This is rather strict, there are
changes that require Python >= 3.8.

(gh-19665)

str/repr of complex dtypes now include space after punctuation

The repr of
np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now
dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}),
whereas spaces where previously omitted after colons and between fields.

The old behavior can be restored via
np.set_printoptions(legacy="1.21").

(gh-19687)

Corrected advance in PCG64DSXM and PCG64

Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug
only affects results when the step was larger than $2^{64}$ on platforms
that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

(gh-20049)

Change in generation of random 32 bit floating point variates

There was bug in the generation of 32 bit floating point values from the
uniform distribution that would result in the least significant bit of
the random variate always being 0. This has been fixed.

This change affects the variates produced by the random.Generator
methods random, standard_normal, standard_exponential, and
standard_gamma, but only when the dtype is specified as
numpy.float32.

(gh-20314)

C API changes

Masked inner-loops cannot be customized anymore

The masked inner-loop selector is now never used. A warning will be
given in the unlikely event that it was customized.

We do not expect that any code uses this. If you do use it, you must
unset the selector on newer NumPy version. Please also contact the NumPy
developers, we do anticipate providing a new, more specific, mechanism.

The customization was part of a never-implemented feature to allow for
faster masked operations.

(gh-19259)

New Features

NEP 49 configurable allocators

As detailed in NEP 49, the
function used for allocation of the data segment of a ndarray can be
changed. The policy can be set globally or in a context. For more
information see the NEP and the data_memory{.interpreted-text
role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY
override to warn on dangerous use of transfering ownership by setting
NPY_ARRAY_OWNDATA.

(gh-17582)

Implementation of the NEP 47 (adopting the array API standard)

An initial implementation of NEP47, adoption
of the array API standard, has been added as numpy.array_api. The
implementation is experimental and will issue a UserWarning on import,
as the array API standard is still in
draft state. numpy.array_api is a conforming implementation of the
array API standard, which is also minimal, meaning that only those
functions and behaviors that are required by the standard are
implemented (see the NEP for more info). Libraries wishing to make use
of the array API standard are encouraged to use numpy.array_api to
check that they are only using functionality that is guaranteed to be
present in standard conforming implementations.

(gh-18585)

Generate C/C++ API reference documentation from comments blocks is now possible

This feature depends on Doxygen in
the generation process and on
Breathe to integrate it
with Sphinx.

(gh-18884)

Assign the platform-specific c_intp precision via a mypy plugin

The mypy plugin, introduced in
numpy/numpy#17843, has
again been expanded: the plugin now is now responsible for setting the
platform-specific precision of numpy.ctypeslib.c_intp, the latter
being used as data type for various numpy.ndarray.ctypes attributes.

Without the plugin, aforementioned type will default to
ctypes.c_int64.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-19062)

Add NEP 47-compatible dlpack support

Add a ndarray.__dlpack__() method which returns a dlpack C structure
wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function,
where obj supports __dlpack__(), and returns an ndarray.

(gh-19083)

keepdims optional argument added to numpy.argmin, numpy.argmax

keepdims argument is added to numpy.argmin, numpy.argmax. If set
to True, the axes which are reduced are left in the result as
dimensions with size one. The resulting array has the same number of
dimensions and will broadcast with the input array.

(gh-19211)

bit_count to compute the number of 1-bits in an integer

Computes the number of 1-bits in the absolute value of the input. This
works on all the numpy integer types. Analogous to the builtin
int.bit_count or popcount in C++.

>>> np.uint32(1023).bit_count()
10
>>> np.int32(-127).bit_count()
7

(gh-19355)

The ndim and axis attributes have been added to numpy.AxisError

The ndim and axis parameters are now also stored as attributes
within each numpy.AxisError instance.

(gh-19459)

Preliminary support for windows/arm64 target

numpy added support for windows/arm64 target. Please note OpenBLAS
support is not yet available for windows/arm64 target.

(gh-19513)

Added support for LoongArch

LoongArch is a new instruction set, numpy compilation failure on
LoongArch architecture, so add the commit.

(gh-19527)

A .clang-format file has been added

Clang-format is a C/C++ code formatter, together with the added
.clang-format file, it produces code close enough to the NumPy
C_STYLE_GUIDE for general use. Clang-format version 12+ is required
due to the use of several new features, it is available in Fedora 34 and
Ubuntu Focal among other distributions.

(gh-19754)

is_integer is now available to numpy.floating and numpy.integer

Based on its counterpart in Python float and int, the numpy floating
point and integer types now support float.is_integer. Returns True
if the number is finite with integral value, and False otherwise.

>>> np.float32(-2.0).is_integer()
True
>>> np.float64(3.2).is_integer()
False
>>> np.int32(-2).is_integer()
True

(gh-19803)

Symbolic parser for Fortran dimension specifications

A new symbolic parser has been added to f2py in order to correctly parse
dimension specifications. The parser is the basis for future
improvements and provides compatibility with Draft Fortran 202x.

(gh-19805)

ndarray, dtype and number are now runtime-subscriptable

Mimicking PEP-585, the numpy.ndarray,
numpy.dtype and numpy.number classes are now subscriptable for
python 3.9 and later. Consequently, expressions that were previously
only allowed in .pyi stub files or with the help of
from __future__ import annotations are now also legal during runtime.

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

(gh-19879)

Improvements

ctypeslib.load_library can now take any path-like object

All parameters in the can now take any
python:path-like object{.interpreted-text role="term"}. This includes
the likes of strings, bytes and objects implementing the
__fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"}
protocol.

(gh-17530)

Add smallest_normal and smallest_subnormal attributes to finfo

The attributes smallest_normal and smallest_subnormal are available
as an extension of finfo class for any floating-point data type. To
use these new attributes, write np.finfo(np.float64).smallest_normal
or np.finfo(np.float64).smallest_subnormal.

(gh-18536)

numpy.linalg.qr accepts stacked matrices as inputs

numpy.linalg.qr is able to produce results for stacked matrices as
inputs. Moreover, the implementation of QR decomposition has been
shifted to C from Python.

(gh-19151)

numpy.fromregex now accepts os.PathLike implementations

numpy.fromregex now accepts objects implementing the
__fspath__<os.PathLike> protocol, e.g. pathlib.Path.

(gh-19680)

Add new methods for quantile and percentile

quantile and percentile now have have a method= keyword argument
supporting 13 different methods. This replaces the interpolation=
keyword argument.

The methods are now aligned with nine methods which can be found in
scientific literature and the R language. The remaining methods are the
previous discontinuous variations of the default "linear" one.

Please see the documentation of numpy.percentile for more information.

(gh-19857)

Missing parameters have been added to the nan<x> functions

A number of the nan<x> functions previously lacked parameters that
were present in their <x>-based counterpart, e.g. the where
parameter was present in numpy.mean but absent from numpy.nanmean.

The following parameters have now been added to the nan<x> functions:

  • nanmin: initial & where
  • nanmax: initial & where
  • nanargmin: keepdims & out
  • nanargmax: keepdims & out
  • nansum: initial & where
  • nanprod: initial & where
  • nanmean: where
  • nanvar: where
  • nanstd: where

(gh-20027)

Annotating the main Numpy namespace

Starting from the 1.20 release, PEP 484 type annotations have been
included for parts of the NumPy library; annotating the remaining
functions being a work in progress. With the release of 1.22 this
process has been completed for the main NumPy namespace, which is now
fully annotated.

Besides the main namespace, a limited number of sub-packages contain
annotations as well. This includes, among others, numpy.testing,
numpy.linalg and numpy.random (available since 1.21).

(gh-20217)

Vectorize umath module using AVX-512

By leveraging Intel Short Vector Math Library (SVML), 18 umath functions
(exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan,
arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh,
arccosh, arctanh) are vectorized using AVX-512 instruction set for
both single and double precision implementations. This change is
currently enabled only for Linux users and on processors with AVX-512
instruction set. It provides an average speed up of 32x and 14x for
single and double precision functions respectively.

(gh-19478)

OpenBLAS v0.3.17

Update the OpenBLAS used in testing and in wheels to v0.3.17

(gh-19462)

Checksums

MD5

b23c1c11503d1e1c29ac58c3febfbe1a  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_universal2.whl
fdf997a0a53a1dcd33bb239132fa690f  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_x86_64.whl
c7e7d35bb1bdf67b83e1cb0da8a761b6  numpy-1.22.0rc3-cp310-cp310-macosx_11_0_arm64.whl
148a33cfb225369800f3a9b3e3c9bb7d  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
021009e2e46a0d76d3dd876a23a48a2e  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ff4080c69d1784e77d8dd0a8f81d85b8  numpy-1.22.0rc3-cp310-cp310-win_amd64.whl
11e8f56c37ce7e5584a4e63f866acbf9  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_universal2.whl
cb378d8f6de2517f3eaa82893e8c6ad6  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_x86_64.whl
e2e8c26bea00f2519cc5060d5480c746  numpy-1.22.0rc3-cp38-cp38-macosx_11_0_arm64.whl
7da9371b5f6f1a615610dc6625f4d783  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
e4757f030cd9ac121c5fff3ceb783975  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
08cd8858c64a7e2e4e4c19edc55f283e  numpy-1.22.0rc3-cp38-cp38-win32.whl
da71dfd7685f4056a892e5af7f01d516  numpy-1.22.0rc3-cp38-cp38-win_amd64.whl
029a566a13e7358465bd6b8b884b16f3  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_universal2.whl
ce5c8ad1b490f2f834739b74502e9aed  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_x86_64.whl
a7c6dae3cce7d3885b8600cd102adf74  numpy-1.22.0rc3-cp39-cp39-macosx_11_0_arm64.whl
e97a1ecbb39cfd7b80f78c73f4ecba51  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ff32a6642b8c033b51da5421b626645c  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
4e8c44f9c72d9c72a5610cb142e9ee52  numpy-1.22.0rc3-cp39-cp39-win32.whl
5c264fca3e74568f0a54169fc55d506f  numpy-1.22.0rc3-cp39-cp39-win_amd64.whl
1aef1271d98ac4f7b9005a2baacc837e  numpy-1.22.0rc3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
19ed28cde2192447ac3ba2971a7d2660  numpy-1.22.0rc3.tar.gz
cfc937c6311761b0699e6d0405433deb  numpy-1.22.0rc3.zip

SHA256

4315a66e64fe1adc7f7fa51116c87cdf5a78f2f8265c6d0ee27bfcbe845b3ddf  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_universal2.whl
af16e2163c1edfaa82ec43a220acc31ad0ff51619efcb41d79440dfc130e9562  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_x86_64.whl
ced56665c49691ad8a31d553e42248566678f188e7c1813cadc947bfb91f3abd  numpy-1.22.0rc3-cp310-cp310-macosx_11_0_arm64.whl
f13703ad4849ef62d3dadc1af1e00ce2762458b4466d4f3e339d84e6b450af33  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
6ebe0f0f40aa86c5cbe41e017e2028ba318e0743d93674a19f06a2401e602bd7  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
11fb5ee7b8a2a01bccdfb715889cb1a8490bfceeba1ab1ca9d01c92329ca5a4b  numpy-1.22.0rc3-cp310-cp310-win_amd64.whl
301df2531616ff7dac8224c104b38d301adabb96c12650dae06d2036da53c385  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_universal2.whl
3d0b6fb9796ba83500990dc18d8dbeaca49559c7f7f47da723fee902a99ee4bb  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_x86_64.whl
5b46584808f06d90df177520136cfeb5f2151b0e6a762e94c05a36f82140ff7b  numpy-1.22.0rc3-cp38-cp38-macosx_11_0_arm64.whl
20016b0ed895bb80f37caadd224b01b6cc52520766ba67d8f5536ac16ef08002  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
2313aa9b9684b36b0bf07e44432d025e0803518286a1ecae5f0ea947b46008df  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
af718720cb23c795a1470fde1a860c7fbbcd1387e1f3755cf734417f96124766  numpy-1.22.0rc3-cp38-cp38-win32.whl
26271b883db7ff9e375df36ad92fc9921fc336480d0aabe4483503640c9b5dd3  numpy-1.22.0rc3-cp38-cp38-win_amd64.whl
e55a7a201e1972e2686ffee1dba1ddf5e041989018a707540ba10be8367331b1  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_universal2.whl
b445551ff10fe31adb76df0e6d0210e02c586686297faddcf453dd51ce2b2ea0  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_x86_64.whl
a0964771a7660fd3d2420d6be0a08144f49f14d684bbe85f67467ad81bd73180  numpy-1.22.0rc3-cp39-cp39-macosx_11_0_arm64.whl
6eaa053519d1ed5922621ecb04d33d64769508060860eb0b8a07502d55554a2c  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
222ce51bf9d4c77f2222049d75ea908f1862302cab7d5ccdb88773b9514e10af  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
07805b77c2b4582bc6888795c0463bf3d4bd758dee922fcd685413eb3274295f  numpy-1.22.0rc3-cp39-cp39-win32.whl
b63c2976f10a94af28c2860a74d7cf07ed9489ebfd36fbadb9816d3bf6ba8efb  numpy-1.22.0rc3-cp39-cp39-win_amd64.whl
c3a8d12b5bf04ce3495ad2b4d706a3058415185c16d3e8d094264a9de62d52e2  numpy-1.22.0rc3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
2a61da0dc062655097cefa5ae47712317b677f22bf3f20cf397c52fae57dea8a  numpy-1.22.0rc3.tar.gz
0b5642efe2a36f2191102b44bb95ee1479f14c1adb2d7155303e50b2517e43bc  numpy-1.22.0rc3.zip
numpy -

Published by charris almost 3 years ago

NumPy 1.22.0 Release Notes

NumPy 1.22.0 is a big release featuring the work of 151 contributers
spread over 589 pull requests. There have been many improvements,
highlights are:

  • Annotations of the main namespace are essentially complete. Upstream
    is a moving target, so there will likely be further improvements,
    but the major work is done. This is probably the most user visible
    enhancement in this release.
  • A preliminary version of the proposed Array-API is provided. This is
    a step in creating a standard collection of functions that can be
    used across application such as CuPy and JAX.
  • NumPy now has a DLPack backend. DLPack provides a common interchange
    format for array (tensor) data.
  • New methods for quantile, percentile, and related functions. The
    new methods provide a complete set of the methods commonly found in
    the literature.
  • A new configurable allocator for use by downstream projects.

These are in addition to the ongoing work to provide SIMD support for
commonly used functions, improvements to F2PY, and better documentation.

The Python versions supported in this release are 3.8-3.10, Python 3.7
has been dropped. Note that 32 bit wheels are only provided for Python
3.8 and 3.9 on Windows, all other wheels are 64 bits on account of
Ubuntu, Fedora, and other Linux distributions dropping 32 bit support.
All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix
the occasional problems encountered by folks using truly huge arrays.

Expired deprecations

Deprecated numeric style dtype strings have been removed

Using the strings "Bytes0", "Datetime64", "Str0", "Uint32",
and "Uint64" as a dtype will now raise a TypeError.

(gh-19539)

Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

numpy.loads was deprecated in v1.15, with the recommendation that
users use pickle.loads instead. ndfromtxt and mafromtxt were both
deprecated in v1.17 - users should use numpy.genfromtxt instead with
the appropriate value for the usemask parameter.

(gh-19615)

Deprecations

Use delimiter rather than delimitor as kwarg in mrecords

The misspelled keyword argument delimitor of
numpy.ma.mrecords.fromtextfile() has been changed to delimiter,
using it will emit a deprecation warning.

(gh-19921)

Passing boolean kth values to (arg-)partition has been deprecated

numpy.partition and numpy.argpartition would previously accept
boolean values for the kth parameter, which would subsequently be
converted into integers. This behavior has now been deprecated.

(gh-20000)

The np.MachAr class has been deprecated

The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have
been deprecated. Users are encouraged to access the property if interest
directly from the corresponding numpy.finfo attribute.

(gh-20201)

Compatibility notes

Distutils forces strict floating point model on clang

NumPy now sets the -ftrapping-math option on clang to enforce correct
floating point error handling for universal functions. Clang defaults to
non-IEEE and C99 conform behaviour otherwise. This change (using the
equivalent but newer -ffp-exception-behavior=strict) was attempted in
NumPy 1.21, but was effectively never used.

(gh-19479)

Removed floor division support for complex types

Floor division of complex types will now result in a TypeError

>>> a = np.arange(10) + 1j* np.arange(10)
>>> a // 1
TypeError: ufunc 'floor_divide' not supported for the input types...

(gh-19135)

numpy.vectorize functions now produce the same output class as the base function

When a function that respects numpy.ndarray subclasses is vectorized
using numpy.vectorize, the vectorized function will now be
subclass-safe also for cases that a signature is given (i.e., when
creating a gufunc): the output class will be the same as that returned
by the first call to the underlying function.

(gh-19356)

Python 3.7 is no longer supported

Python support has been dropped. This is rather strict, there are
changes that require Python >= 3.8.

(gh-19665)

str/repr of complex dtypes now include space after punctuation

The repr of
np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now
dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}),
whereas spaces where previously omitted after colons and between fields.

The old behavior can be restored via
np.set_printoptions(legacy="1.21").

(gh-19687)

Corrected advance in PCG64DSXM and PCG64

Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug
only affects results when the step was larger than $2^{64}$ on platforms
that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

(gh-20049)

Change in generation of random 32 bit floating point variates

There was bug in the generation of 32 bit floating point values from the
uniform distribution that would result in the least significant bit of
the random variate always being 0. This has been fixed.

This change affects the variates produced by the random.Generator
methods random, standard_normal, standard_exponential, and
standard_gamma, but only when the dtype is specified as
numpy.float32.

(gh-20314)

C API changes

Masked inner-loops cannot be customized anymore

The masked inner-loop selector is now never used. A warning will be
given in the unlikely event that it was customized.

We do not expect that any code uses this. If you do use it, you must
unset the selector on newer NumPy version. Please also contact the NumPy
developers, we do anticipate providing a new, more specific, mechanism.

The customization was part of a never-implemented feature to allow for
faster masked operations.

(gh-19259)

New Features

NEP 49 configurable allocators

As detailed in NEP 49, the
function used for allocation of the data segment of a ndarray can be
changed. The policy can be set globally or in a context. For more
information see the NEP and the data_memory{.interpreted-text
role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY
override to warn on dangerous use of transfering ownership by setting
NPY_ARRAY_OWNDATA.

(gh-17582)

Implementation of the NEP 47 (adopting the array API standard)

An initial implementation of NEP47, adoption
of the array API standard, has been added as numpy.array_api. The
implementation is experimental and will issue a UserWarning on import,
as the array API standard is still in
draft state. numpy.array_api is a conforming implementation of the
array API standard, which is also minimal, meaning that only those
functions and behaviors that are required by the standard are
implemented (see the NEP for more info). Libraries wishing to make use
of the array API standard are encouraged to use numpy.array_api to
check that they are only using functionality that is guaranteed to be
present in standard conforming implementations.

(gh-18585)

Generate C/C++ API reference documentation from comments blocks is now possible

This feature depends on Doxygen in
the generation process and on
Breathe to integrate it
with Sphinx.

(gh-18884)

Assign the platform-specific c_intp precision via a mypy plugin

The mypy plugin, introduced in
numpy/numpy#17843, has
again been expanded: the plugin now is now responsible for setting the
platform-specific precision of numpy.ctypeslib.c_intp, the latter
being used as data type for various numpy.ndarray.ctypes attributes.

Without the plugin, aforementioned type will default to
ctypes.c_int64.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-19062)

Add NEP 47-compatible dlpack support

Add a ndarray.__dlpack__() method which returns a dlpack C structure
wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function,
where obj supports __dlpack__(), and returns an ndarray.

(gh-19083)

keepdims optional argument added to numpy.argmin, numpy.argmax

keepdims argument is added to numpy.argmin, numpy.argmax. If set
to True, the axes which are reduced are left in the result as
dimensions with size one. The resulting array has the same number of
dimensions and will broadcast with the input array.

(gh-19211)

bit_count to compute the number of 1-bits in an integer

Computes the number of 1-bits in the absolute value of the input. This
works on all the numpy integer types. Analogous to the builtin
int.bit_count or popcount in C++.

>>> np.uint32(1023).bit_count()
10
>>> np.int32(-127).bit_count()
7

(gh-19355)

The ndim and axis attributes have been added to numpy.AxisError

The ndim and axis parameters are now also stored as attributes
within each numpy.AxisError instance.

(gh-19459)

Preliminary support for windows/arm64 target

numpy added support for windows/arm64 target. Please note OpenBLAS
support is not yet available for windows/arm64 target.

(gh-19513)

Added support for LoongArch

LoongArch is a new instruction set, numpy compilation failure on
LoongArch architecture, so add the commit.

(gh-19527)

A .clang-format file has been added

Clang-format is a C/C++ code formatter, together with the added
.clang-format file, it produces code close enough to the NumPy
C_STYLE_GUIDE for general use. Clang-format version 12+ is required
due to the use of several new features, it is available in Fedora 34 and
Ubuntu Focal among other distributions.

(gh-19754)

is_integer is now available to numpy.floating and numpy.integer

Based on its counterpart in Python float and int, the numpy floating
point and integer types now support float.is_integer. Returns True
if the number is finite with integral value, and False otherwise.

>>> np.float32(-2.0).is_integer()
True
>>> np.float64(3.2).is_integer()
False
>>> np.int32(-2).is_integer()
True

(gh-19803)

Symbolic parser for Fortran dimension specifications

A new symbolic parser has been added to f2py in order to correctly parse
dimension specifications. The parser is the basis for future
improvements and provides compatibility with Draft Fortran 202x.

(gh-19805)

ndarray, dtype and number are now runtime-subscriptable

Mimicking PEP-585, the numpy.ndarray,
numpy.dtype and numpy.number classes are now subscriptable for
python 3.9 and later. Consequently, expressions that were previously
only allowed in .pyi stub files or with the help of
from __future__ import annotations are now also legal during runtime.

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

(gh-19879)

Improvements

ctypeslib.load_library can now take any path-like object

All parameters in the can now take any
python:path-like object{.interpreted-text role="term"}. This includes
the likes of strings, bytes and objects implementing the
__fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"}
protocol.

(gh-17530)

Add smallest_normal and smallest_subnormal attributes to finfo

The attributes smallest_normal and smallest_subnormal are available
as an extension of finfo class for any floating-point data type. To
use these new attributes, write np.finfo(np.float64).smallest_normal
or np.finfo(np.float64).smallest_subnormal.

(gh-18536)

numpy.linalg.qr accepts stacked matrices as inputs

numpy.linalg.qr is able to produce results for stacked matrices as
inputs. Moreover, the implementation of QR decomposition has been
shifted to C from Python.

(gh-19151)

numpy.fromregex now accepts os.PathLike implementations

numpy.fromregex now accepts objects implementing the
__fspath__<os.PathLike> protocol, e.g. pathlib.Path.

(gh-19680)

Add new methods for quantile and percentile

quantile and percentile now have have a method= keyword argument
supporting 13 different methods. This replaces the interpolation=
keyword argument.

The methods are now aligned with nine methods which can be found in
scientific literature and the R language. The remaining methods are the
previous discontinuous variations of the default "linear" one.

Please see the documentation of numpy.percentile for more information.

(gh-19857)

Missing parameters have been added to the nan<x> functions

A number of the nan<x> functions previously lacked parameters that
were present in their <x>-based counterpart, e.g. the where
parameter was present in numpy.mean but absent from numpy.nanmean.

The following parameters have now been added to the nan<x> functions:

  • nanmin: initial & where
  • nanmax: initial & where
  • nanargmin: keepdims & out
  • nanargmax: keepdims & out
  • nansum: initial & where
  • nanprod: initial & where
  • nanmean: where
  • nanvar: where
  • nanstd: where

(gh-20027)

Annotating the main Numpy namespace

Starting from the 1.20 release, PEP 484 type annotations have been
included for parts of the NumPy library; annotating the remaining
functions being a work in progress. With the release of 1.22 this
process has been completed for the main NumPy namespace, which is now
fully annotated.

Besides the main namespace, a limited number of sub-packages contain
annotations as well. This includes, among others, numpy.testing,
numpy.linalg and numpy.random (available since 1.21).

(gh-20217)

Vectorize umath module using AVX-512

By leveraging Intel Short Vector Math Library (SVML), 18 umath functions
(exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan,
arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh,
arccosh, arctanh) are vectorized using AVX-512 instruction set for
both single and double precision implementations. This change is
currently enabled only for Linux users and on processors with AVX-512
instruction set. It provides an average speed up of 32x and 14x for
single and double precision functions respectively.

(gh-19478)

OpenBLAS v0.3.17

Update the OpenBLAS used in testing and in wheels to v0.3.17

(gh-19462)

Checksums

MD5

824c4112f63bb1059703524f2ea39a7c  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_universal2.whl
f97f47414e7fdc8bad39fa87d9248e47  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
7c184eb9216073b516733cfe5b5d65aa  numpy-1.22.0rc2-cp310-cp310-macosx_11_0_arm64.whl
43dd129a673e3346fa37d1b466da3252  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
236e5f9cb23a328a8c6ee8735c49f057  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
40e7f1b4a8912d757f02fc07cea3d920  numpy-1.22.0rc2-cp310-cp310-win_amd64.whl
9c3a547153ba9b2425fad1bca20e7893  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_universal2.whl
71254fdd07cd21554ff259f773387b36  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
5f19bc28ccbadaf467a98b4be99eec26  numpy-1.22.0rc2-cp38-cp38-macosx_11_0_arm64.whl
35e8024c21aec5b166666a25cc58d1c4  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
549ef12115032ea5acc505e426e1c1ee  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b1cad86de88044c80edb5768a5d1a636  numpy-1.22.0rc2-cp38-cp38-win32.whl
dfddc47854c314fd0a08586f2a766e01  numpy-1.22.0rc2-cp38-cp38-win_amd64.whl
eec2378e50ea4c16d6d398adc576c260  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_universal2.whl
ed6e62d63e1f5a28f8fb58407ec960f8  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
5947f1b695955d871583d863f7f65d81  numpy-1.22.0rc2-cp39-cp39-macosx_11_0_arm64.whl
1f07317b9b7a97f4995d1df3eddd4eef  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
8c3b5fed43af5ea6d758812ff41aefd7  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ab851c749351b74de5049e06aff8c92f  numpy-1.22.0rc2-cp39-cp39-win32.whl
351086196ee8548bc130e1597a0ed9e1  numpy-1.22.0rc2-cp39-cp39-win_amd64.whl
920888e42e2d43393b48d67da1e98d2d  numpy-1.22.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
f67b97d052658b42c6bcdcb05c212dd0  numpy-1.22.0rc2.tar.gz
ba493e8d3e3d2cfd0c34aed057c91c46  numpy-1.22.0rc2.zip

SHA256

7bfcf46e1acc8750f623b4b1329e14be65ffadb543f4521f8e1b430d0520c81b  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_universal2.whl
81cb12f4ad3b45f7b4b49abec16ab880dea88965e3097730eb985be0e34a4d2d  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
1d5e23b15da36ddf5e2101e39b6dcd7303fddfe2454eae10d008220a358e0e83  numpy-1.22.0rc2-cp310-cp310-macosx_11_0_arm64.whl
7e1bc4a0bf6663147d740a5a54693774c337474f98185ba7a64d330239377d39  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d54a2a0628f8bc0e4d35865c4e98a8832529cbf0988beaa793bc001a0a7d8ee4  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a080d72182500b252f3d11821edd7bc4909e867da60a1067aad54e1e7cc66cd9  numpy-1.22.0rc2-cp310-cp310-win_amd64.whl
0fe7e7c972bb6ae27e9f587e1504db3c0dac4dd07be86d54aab8f5539b3e5c12  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_universal2.whl
449b9a32f51829b8701f0632cb0ec994fc6a2583ee9360f49dd63ed83ae00ccd  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
e5ba4a2828a70eb929305322e7ccab4a394dd09aebadc820fb3bab8a78a798a5  numpy-1.22.0rc2-cp38-cp38-macosx_11_0_arm64.whl
50f171a7193796a88da1097a70bb8c972f700d0f94a981a7a96043d1d2334c28  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
56ae14a0f3b254ede5743c86641277072b0e0ac4a1b6e7903fe574856c120339  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a77afd61d5941d0439c245f29e6dd49781d1debee0441b46ac286e12a681d4db  numpy-1.22.0rc2-cp38-cp38-win32.whl
49785892d8573135bb1cd7684b0b42803aab0a10b0e68f5f675c8030b3aa9f9c  numpy-1.22.0rc2-cp38-cp38-win_amd64.whl
1e4220474a0a2614deb817b98ce569cf58c53cf66a168ba55eeeb9f8e3878375  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_universal2.whl
5296fb0303c8d5653f83081fe8f11d6e88ecebe77aca149e9bfe3ec68297929a  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
4f067fe9e9acf18e6ee450854ced9d3204d8e817bcd4dcbc4db6cdc9f2ba838b  numpy-1.22.0rc2-cp39-cp39-macosx_11_0_arm64.whl
68be281c331c9811a3fbae5990c4f8b14f7e26206869bf441314a414cb96aaa6  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
2ce70ec6ee651364e63907aca89cf55556de4e6ca9e01af3a7a6228b9b436878  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
467c2290325fa5ca82d443815a98ef10a93b31d7771a1b4e08396d1e1128c74f  numpy-1.22.0rc2-cp39-cp39-win32.whl
b46ab9c390828933485289cc7ff5d41d612d1a9b4633ff06814fc7efc9966518  numpy-1.22.0rc2-cp39-cp39-win_amd64.whl
e0c7009fde55f27cbec3b21c487fc7cfffcb23c2058b27b153c07a856e144e06  numpy-1.22.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
f1f7c11a270959f08ca4cef566b8db5795357801f2023e512763554a563fd736  numpy-1.22.0rc2.tar.gz
01810dc32c5ac4c895b5c0d285497e1eb52038834919f3d2eaddfb9526b20dc9  numpy-1.22.0rc2.zip
numpy -

Published by charris almost 3 years ago

NumPy 1.22.0 Release Notes

NumPy 1.22.0 is a big release featuring the work of 150 contributers
spread over 575 pull requests. There have been many improvements,
highlights are:

  • Annotations of the main namespace are essentially complete. Upstream
    is a moving target, so there will likely be further improvements,
    but the major work is done. This is probably the most user visible
    enhancement in this release.
  • A preliminary version of the proposed Array-API is provided. This is
    a step in creating a standard collection of functions that can be
    used across application such as CuPy and JAX.
  • NumPy now has a DLPack backend. DLPack provides a common interchange
    format for array (tensor) data.
  • New methods for quantile, percentile, and related functions. The
    new methods provide a complete set of the methods commonly found in
    the literature.
  • A new configurable allocator for use by downstream projects.

These are in addition to the ongoing work to provide SIMD support for
commonly used functions, improvements to F2PY, and better documentation.

The Python versions supported in this release are 3.8-3.10, Python 3.7
has been dropped. Note that 32 bit wheels are only provided for Python
3.8 and 3.9 on Windows, all other wheels are 64 bits on account of
Ubuntu, Fedora, and other Linux distributions dropping 32 bit support.
All 64 bit wheels are also linked with 64 bit OpenBLAS, which should fix
the occasional problems encountered by folks using truly huge arrays.

Expired deprecations

Deprecated numeric style dtype strings have been removed

Using the strings "Bytes0", "Datetime64", "Str0", "Uint32",
and "Uint64" as a dtype will now raise a TypeError.

(gh-19539)

Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

numpy.loads was deprecated in v1.15, with the recommendation that
users use pickle.loads instead. ndfromtxt and mafromtxt were both
deprecated in v1.17 - users should use numpy.genfromtxt instead with
the appropriate value for the usemask parameter.

(gh-19615)

Deprecations

Use delimiter rather than delimitor as kwarg in mrecords

The misspelled keyword argument delimitor of
numpy.ma.mrecords.fromtextfile() has been changed to delimiter,
using it will emit a deprecation warning.

(gh-19921)

Passing boolean kth values to (arg-)partition has been deprecated

numpy.partition and numpy.argpartition would previously accept
boolean values for the kth parameter, which would subsequently be
converted into integers. This behavior has now been deprecated.

(gh-20000)

The np.MachAr class has been deprecated

The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have
been deprecated. Users are encouraged to access the property if interest
directly from the corresponding numpy.finfo attribute.

(gh-20201)

Compatibility notes

Distutils forces strict floating point model on clang

NumPy now sets the -ftrapping-math option on clang to enforce correct
floating point error handling for universal functions. Clang defaults to
non-IEEE and C99 conform behaviour otherwise. This change (using the
equivalent but newer -ffp-exception-behavior=strict) was attempted in
NumPy 1.21, but was effectively never used.

(gh-19479)

Removed floor division support for complex types

Floor division of complex types will now result in a TypeError

>>> a = np.arange(10) + 1j* np.arange(10)
>>> a // 1
TypeError: ufunc 'floor_divide' not supported for the input types...

(gh-19135)

numpy.vectorize functions now produce the same output class as the base function

When a function that respects numpy.ndarray subclasses is vectorized
using numpy.vectorize, the vectorized function will now be
subclass-safe also for cases that a signature is given (i.e., when
creating a gufunc): the output class will be the same as that returned
by the first call to the underlying function.

(gh-19356)

Python 3.7 is no longer supported

Python support has been dropped. This is rather strict, there are
changes that require Python >= 3.8.

(gh-19665)

str/repr of complex dtypes now include space after punctuation

The repr of
np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now
dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}),
whereas spaces where previously omitted after colons and between fields.

The old behavior can be restored via
np.set_printoptions(legacy="1.21").

(gh-19687)

Corrected advance in PCG64DSXM and PCG64

Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug
only affects results when the step was larger than $2^{64}$ on platforms
that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

(gh-20049)

Change in generation of random 32 bit floating point variates

There was bug in the generation of 32 bit floating point values from the
uniform distribution that would result in the least significant bit of
the random variate always being 0. This has been fixed.

This change affects the variates produced by the random.Generator
methods random, standard_normal, standard_exponential, and
standard_gamma, but only when the dtype is specified as
numpy.float32.

(gh-20314)

C API changes

Masked inner-loops cannot be customized anymore

The masked inner-loop selector is now never used. A warning will be
given in the unlikely event that it was customized.

We do not expect that any code uses this. If you do use it, you must
unset the selector on newer NumPy version. Please also contact the NumPy
developers, we do anticipate providing a new, more specific, mechanism.

The customization was part of a never-implemented feature to allow for
faster masked operations.

(gh-19259)

New Features

NEP 49 configurable allocators

As detailed in NEP 49, the
function used for allocation of the data segment of a ndarray can be
changed. The policy can be set globally or in a context. For more
information see the NEP and the data_memory{.interpreted-text
role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY
override to warn on dangerous use of transfering ownership by setting
NPY_ARRAY_OWNDATA.

(gh-17582)

Implementation of the NEP 47 (adopting the array API standard)

An initial implementation of NEP
47
(adoption
the array API standard) has been added as numpy.array_api. The
implementation is experimental and will issue a UserWarning on import,
as the array API
standard
is still in
draft state. numpy.array_api is a conforming implementation of the
array API standard, which is also minimal, meaning that only those
functions and behaviors that are required by the standard are
implemented (see the NEP for more info). Libraries wishing to make use
of the array API standard are encouraged to use numpy.array_api to
check that they are only using functionality that is guaranteed to be
present in standard conforming implementations.

(gh-18585)

Generate C/C++ API reference documentation from comments blocks is now possible

This feature depends on Doxygen in
the generation process and on
Breathe to integrate it
with Sphinx.

(gh-18884)

Assign the platform-specific c_intp precision via a mypy plugin

The mypy plugin, introduced in
numpy/numpy#17843, has
again been expanded: the plugin now is now responsible for setting the
platform-specific precision of numpy.ctypeslib.c_intp, the latter
being used as data type for various numpy.ndarray.ctypes attributes.

Without the plugin, aforementioned type will default to
ctypes.c_int64.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-19062)

Add NEP 47-compatible dlpack support

Add a ndarray.__dlpack__() method which returns a dlpack C structure
wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function,
where obj supports __dlpack__(), and returns an ndarray.

(gh-19083)

keepdims optional argument added to numpy.argmin, numpy.argmax

keepdims argument is added to numpy.argmin, numpy.argmax. If set
to True, the axes which are reduced are left in the result as
dimensions with size one. The resulting array has the same number of
dimensions and will broadcast with the input array.

(gh-19211)

bit_count to compute the number of 1-bits in an integer

Computes the number of 1-bits in the absolute value of the input. This
works on all the numpy integer types. Analogous to the builtin
int.bit_count or popcount in C++.

>>> np.uint32(1023).bit_count()
10
>>> np.int32(-127).bit_count()
7

(gh-19355)

The ndim and axis attributes have been added to numpy.AxisError

The ndim and axis parameters are now also stored as attributes
within each numpy.AxisError instance.

(gh-19459)

Preliminary support for windows/arm64 target

numpy added support for windows/arm64 target. Please note OpenBLAS
support is not yet available for windows/arm64 target.

(gh-19513)

Added support for LoongArch

LoongArch is a new instruction set, numpy compilation failure on
LoongArch architecture, so add the commit.

(gh-19527)

A .clang-format file has been added

Clang-format is a C/C++ code formatter, together with the added
.clang-format file, it produces code close enough to the NumPy
C_STYLE_GUIDE for general use. Clang-format version 12+ is required
due to the use of several new features, it is available in Fedora 34 and
Ubuntu Focal among other distributions.

(gh-19754)

is_integer is now available to numpy.floating and numpy.integer

Based on its counterpart in Python float and int, the numpy floating
point and integer types now support float.is_integer. Returns True
if the number is finite with integral value, and False otherwise.

>>> np.float32(-2.0).is_integer()
True
>>> np.float64(3.2).is_integer()
False
>>> np.int32(-2).is_integer()
True

(gh-19803)

Symbolic parser for Fortran dimension specifications

A new symbolic parser has been added to f2py in order to correctly parse
dimension specifications. The parser is the basis for future
improvements and provides compatibility with Draft Fortran 202x.

(gh-19805)

ndarray, dtype and number are now runtime-subscriptable

Mimicking 585{.interpreted-text role="pep"}, the numpy.ndarray,
numpy.dtype and numpy.number classes are now subscriptable for
python 3.9 and later. Consequently, expressions that were previously
only allowed in .pyi stub files or with the help of
from __future__ import annotations are now also legal during runtime.

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

(gh-19879)

Improvements

ctypeslib.load_library can now take any path-like object

All parameters in the can now take any
python:path-like object{.interpreted-text role="term"}. This includes
the likes of strings, bytes and objects implementing the
__fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"}
protocol.

(gh-17530)

Add smallest_normal and smallest_subnormal attributes to finfo

The attributes smallest_normal and smallest_subnormal are available
as an extension of finfo class for any floating-point data type. To
use these new attributes, write np.finfo(np.float64).smallest_normal
or np.finfo(np.float64).smallest_subnormal.

(gh-18536)

numpy.linalg.qr accepts stacked matrices as inputs

numpy.linalg.qr is able to produce results for stacked matrices as
inputs. Moreover, the implementation of QR decomposition has been
shifted to C from Python.

(gh-19151)

numpy.fromregex now accepts os.PathLike implementations

numpy.fromregex now accepts objects implementing the
__fspath__<os.PathLike> protocol, e.g. pathlib.Path.

(gh-19680)

Add new methods for quantile and percentile

quantile and percentile now have have a method= keyword argument
supporting 13 different methods. This replaces the interpolation=
keyword argument.

The methods are now aligned with nine methods which can be found in
scientific literature and the R language. The remaining methods are the
previous discontinuous variations of the default "linear" one.

Please see the documentation of numpy.percentile for more information.

(gh-19857)

Missing parameters have been added to the nan<x> functions

A number of the nan<x> functions previously lacked parameters that
were present in their <x>-based counterpart, e.g. the where
parameter was present in numpy.mean but absent from numpy.nanmean.

The following parameters have now been added to the nan<x> functions:

  • nanmin: initial & where
  • nanmax: initial & where
  • nanargmin: keepdims & out
  • nanargmax: keepdims & out
  • nansum: initial & where
  • nanprod: initial & where
  • nanmean: where
  • nanvar: where
  • nanstd: where

(gh-20027)

Annotating the main Numpy namespace

Starting from the 1.20 release, PEP 484 type annotations have been
included for parts of the NumPy library; annotating the remaining
functions being a work in progress. With the release of 1.22 this
process has been completed for the main NumPy namespace, which is now
fully annotated.

Besides the main namespace, a limited number of sub-packages contain
annotations as well. This includes, among others, numpy.testing,
numpy.linalg and numpy.random (available since 1.21).

(gh-20217)

Vectorize umath module using AVX-512

By leveraging Intel Short Vector Math Library (SVML), 18 umath functions
(exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan,
arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh,
arccosh, arctanh) are vectorized using AVX-512 instruction set for
both single and double precision implementations. This change is
currently enabled only for Linux users and on processors with AVX-512
instruction set. It provides an average speed up of 32x and 14x for
single and double precision functions respectively.

(gh-19478)

OpenBLAS v0.3.17

Update the OpenBLAS used in testing and in wheels to v0.3.17

(gh-19462)

Checksums

MD5

a70dfdbb1e1dab6d5c10c5534c523288  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_universal2.whl
2cccddd30f5ec841d4ce90530f7762b0  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
7b46c1b0f8175b03d0197059c1d3a5d3  numpy-1.22.0rc1-cp310-cp310-macosx_11_0_arm64.whl
7adb43de081457fb9733ef4570a314e9  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
517ec9dede8b479ad986a14912fcc912  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
0379b78e387565067489943ca270ba59  numpy-1.22.0rc1-cp310-cp310-win_amd64.whl
f582541b1e4d322519d4f091a859b2bc  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_universal2.whl
5239cc440f1353555c9e0273d4e68c91  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
1a12742a23205cae3d2d5fda5cd8f478  numpy-1.22.0rc1-cp38-cp38-macosx_11_0_arm64.whl
4a45e2633361c367372d6c98d4e13010  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
15cf27d4ac60c720aa3f36308d90deb2  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
7cc2ffcfbe0f11234f7ba6a09e32980e  numpy-1.22.0rc1-cp38-cp38-win32.whl
64104bfd50dee174344d02506ab4c621  numpy-1.22.0rc1-cp38-cp38-win_amd64.whl
74b7c7f59058000d8437476ab880d943  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_universal2.whl
7850ed6e906589c53b6e7187220f8dcc  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
2a78c0df6943528302b3141e4b9b594b  numpy-1.22.0rc1-cp39-cp39-macosx_11_0_arm64.whl
1e65939095e4e383de6b8e257136a7a9  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
281f3e861afbff12ae9d0b32d95d89bb  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
f8b7d2e3b3b61894051e258b99cbb7b3  numpy-1.22.0rc1-cp39-cp39-win32.whl
5037a963c1486d9ce2eaa3adf84ab560  numpy-1.22.0rc1-cp39-cp39-win_amd64.whl
f82bd053250eee5dd4f35d2e4b8a8e64  numpy-1.22.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
17c532b2ccddb54595099c76ea4322b4  numpy-1.22.0rc1.tar.gz
f1c8568e6df223541d0c647044008949  numpy-1.22.0rc1.zip

SHA256

b00d9bf43cc8975cf5e0c211d218e75a3f5ce1ae34dc84d8a489c28a0dba7848  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_universal2.whl
eb6dd744a9f94b424bf70d62b7874798ea95b6b58fb63ec651b69a46872e5bd5  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
6759e6dafd96454be2d6dd80674293322191639400832688cd234c5f483ce1a9  numpy-1.22.0rc1-cp310-cp310-macosx_11_0_arm64.whl
2242fa31413e40847016234485f228fa5e082b0c555d3db65fe9aa4efcfb8d8d  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d0be0eb7df39f0e0732d73250de55e1dcc8086c23db970d5eab85dbf0713502d  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ccf027e3bbcd06b5c26a0196ddfc24c4d09d2001cc5d38738efff9d9ac8dee58  numpy-1.22.0rc1-cp310-cp310-win_amd64.whl
8c5016694b9bda77cda32ebfdde34d2246978ed4c49e9baab26bcf38621b7390  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_universal2.whl
011e4c430f2e2739e0d182cb7e2b5d47adc46a8db49a788e5798805b7878c4ba  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
b0ed56b9d7535d654d2a0478333cc08d1b9849767eafd07e1f6a3d8d90a2cad0  numpy-1.22.0rc1-cp38-cp38-macosx_11_0_arm64.whl
6730a1495f1acedd97e82e32cca4d8dbe07b89f01f395ca02ca4a9e110d9519d  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
56109e7e9b205439990e90682163d8155cf5743efe65c30221ef3834621ffd3f  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
7dbfa0abe053afbcb9e61ec1557556e4e30c3e4b5df4ec7849bf245e8c09feec  numpy-1.22.0rc1-cp38-cp38-win32.whl
013fa3500a6e5b3ba51401056aa9c41d83a7e737959d15f288d410f26cc33896  numpy-1.22.0rc1-cp38-cp38-win_amd64.whl
a2dd58beb8a8266d704a76692e8eb76ff20f5b2940db7aeee216c2dbf226e5c6  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_universal2.whl
e48368972e0999af098e0a6e9a3573895fd4c3b0b2d8c5cf215b17910cd6c124  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
2934fb435d85341efb40f9db637a203a042300afdaa49f833608df21a5d8ae30  numpy-1.22.0rc1-cp39-cp39-macosx_11_0_arm64.whl
e981667470ae74f06cfd0d54c5fa9cd88661a27eccaac2cba505039f0b29dc2e  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
5e56515f5abb493bd32d2196ecd3ce794792419adfb7d8b4cccd4ddaf74ab924  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
21613822dd597d4645c586ac21910fded5344f843410dace91c129a38c31d8be  numpy-1.22.0rc1-cp39-cp39-win32.whl
91bb1e29d74a90861e878b0c7bc941a1c0ac051cb4b171dc242e66953c95ca1e  numpy-1.22.0rc1-cp39-cp39-win_amd64.whl
0ebb646ef72a2348036ed1692e6bb3f3dd4f8d026681b7168a9ac988d9832c27  numpy-1.22.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
d54616321316987e69cb49d76cec8750d9d0160a32f5f5e71ff3f94b010ebc5e  numpy-1.22.0rc1.tar.gz
bc991b3f8ea7c0f6703df2bc23c098cfe6f1a3a5e8a3a901eb6a5619275d53ff  numpy-1.22.0rc1.zip
numpy -

Published by charris almost 3 years ago

NumPy 1.21.4 Release Notes

The NumPy 1.21.4 is a maintenance release that fixes a few bugs
discovered after 1.21.3. The most important fix here is a fix for the
NumPy header files to make them work for both x86_64 and M1 hardware
when included in the Mac universal2 wheels. Previously, the header files
only worked for M1 and this caused problems for folks building x86_64
extensions. This problem was not seen before Python 3.10 because there
were thin wheels for x86_64 that had precedence. This release also
provides thin x86_64 Mac wheels for Python 3.10.

The Python versions supported in this release are 3.7-3.10. If you want
to compile your own version using gcc-11, you will need to use gcc-11.2+
to avoid problems.

Contributors

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

  • Bas van Beek
  • Charles Harris
  • Isuru Fernando
  • Matthew Brett
  • Sayed Adel
  • Sebastian Berg
  • 傅立业(Chris Fu) +

Pull requests merged

A total of 9 pull requests were merged for this release.

  • #20278: BUG: Fix shadowed reference of dtype in type stub
  • #20293: BUG: Fix headers for universal2 builds
  • #20294: BUG: VOID_nonzero could sometimes mutate alignment flag
  • #20295: BUG: Do not use nonzero fastpath on unaligned arrays
  • #20296: BUG: Distutils patch to allow for 2 as a minor version (!)
  • #20297: BUG, SIMD: Fix 64-bit/8-bit integer division by a scalar
  • #20298: BUG, SIMD: Workaround broadcasting SIMD 64-bit integers on MSVC...
  • #20300: REL: Prepare for the NumPy 1.21.4 release.
  • #20302: TST: Fix a Arrayterator typing test failure

Checksums

MD5

95486a3ed027c926fb3fc279db6d843e  numpy-1.21.4-cp310-cp310-macosx_10_9_universal2.whl
9f57fad74762f7665669af33583a3dc9  numpy-1.21.4-cp310-cp310-macosx_10_9_x86_64.whl
719a9053aef01a067ce44ede2281eef9  numpy-1.21.4-cp310-cp310-macosx_11_0_arm64.whl
72035d101774fd03beff391927f59aa9  numpy-1.21.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
5813e7a378a6e3f5c269c23f61eff4d9  numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b88a1bc4f08dfb154d5a07d15e387af6  numpy-1.21.4-cp310-cp310-win_amd64.whl
f0cc946d2f4ab4df7cc7e0cc8cfd429e  numpy-1.21.4-cp37-cp37m-macosx_10_9_x86_64.whl
1234643306ce481f0e5f801ddf3f1099  numpy-1.21.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
b9208ce1695ba61ab2932c7ce7285d1d  numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
9804fe2011618bf2d7b8d92f6860b2e3  numpy-1.21.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
2ad3a06f974acd61326fd66c098df5bc  numpy-1.21.4-cp37-cp37m-win32.whl
172301389f1532b2d9130362580e1e22  numpy-1.21.4-cp37-cp37m-win_amd64.whl
a037bf88979ae0d4699a0cdce92bbab3  numpy-1.21.4-cp38-cp38-macosx_10_9_universal2.whl
ba94609688f575cc8dce84f1512db116  numpy-1.21.4-cp38-cp38-macosx_10_9_x86_64.whl
c78edc0ae8c9a5d8d0f9e3eb6dabd0b3  numpy-1.21.4-cp38-cp38-macosx_11_0_arm64.whl
d683b6f6af46806391579d528a040451  numpy-1.21.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
df631f776716aeb3fd705f3659599b9e  numpy-1.21.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b1cbca49d24c7ba43d377feb425afdce  numpy-1.21.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
8b5c214bc0f060dbb0287c15dde4673d  numpy-1.21.4-cp38-cp38-win32.whl
2307cf9f3c02f6cdad448a681c272974  numpy-1.21.4-cp38-cp38-win_amd64.whl
fc02b5a068e29b2dd2de19c7ddd69926  numpy-1.21.4-cp39-cp39-macosx_10_9_universal2.whl
f16068540001de8a3d8f096830c97ea2  numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl
80562c39cfbdf1af9bb43b2ea5e45b6d  numpy-1.21.4-cp39-cp39-macosx_11_0_arm64.whl
6c103bec3085e5a6ea92cf7f6e4189ab  numpy-1.21.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
9d715ba5f7596a39eb631f2dae85d203  numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
8b8cf8c7b093419ff75ed1dd2eaa18ae  numpy-1.21.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
404200b858b7addd03f6cdd5a484d30a  numpy-1.21.4-cp39-cp39-win32.whl
cdab6a1bf1b86021526d08a60219a6ad  numpy-1.21.4-cp39-cp39-win_amd64.whl
70ca6b591e844fdcb8c22175f094d3b4  numpy-1.21.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
06019c1116b3e2791bd507f898257e7f  numpy-1.21.4.tar.gz
b3c4477a027d5b6fba5e1065064fd076  numpy-1.21.4.zip

SHA256

8890b3360f345e8360133bc078d2dacc2843b6ee6059b568781b15b97acbe39f  numpy-1.21.4-cp310-cp310-macosx_10_9_universal2.whl
69077388c5a4b997442b843dbdc3a85b420fb693ec8e33020bb24d647c164fa5  numpy-1.21.4-cp310-cp310-macosx_10_9_x86_64.whl
e89717274b41ebd568cd7943fc9418eeb49b1785b66031bc8a7f6300463c5898  numpy-1.21.4-cp310-cp310-macosx_11_0_arm64.whl
0b78ecfa070460104934e2caf51694ccd00f37d5e5dbe76f021b1b0b0d221823  numpy-1.21.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
615d4e328af7204c13ae3d4df7615a13ff60a49cb0d9106fde07f541207883ca  numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
1403b4e2181fc72664737d848b60e65150f272fe5a1c1cbc16145ed43884065a  numpy-1.21.4-cp310-cp310-win_amd64.whl
74b85a17528ca60cf98381a5e779fc0264b4a88b46025e6bcbe9621f46bb3e63  numpy-1.21.4-cp37-cp37m-macosx_10_9_x86_64.whl
92aafa03da8658609f59f18722b88f0a73a249101169e28415b4fa148caf7e41  numpy-1.21.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
5d95668e727c75b3f5088ec7700e260f90ec83f488e4c0aaccb941148b2cd377  numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
f5162ec777ba7138906c9c274353ece5603646c6965570d82905546579573f73  numpy-1.21.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
81225e58ef5fce7f1d80399575576fc5febec79a8a2742e8ef86d7b03beef49f  numpy-1.21.4-cp37-cp37m-win32.whl
32fe5b12061f6446adcbb32cf4060a14741f9c21e15aaee59a207b6ce6423469  numpy-1.21.4-cp37-cp37m-win_amd64.whl
c449eb870616a7b62e097982c622d2577b3dbc800aaf8689254ec6e0197cbf1e  numpy-1.21.4-cp38-cp38-macosx_10_9_universal2.whl
2e4ed57f45f0aa38beca2a03b6532e70e548faf2debbeb3291cfc9b315d9be8f  numpy-1.21.4-cp38-cp38-macosx_10_9_x86_64.whl
1247ef28387b7bb7f21caf2dbe4767f4f4175df44d30604d42ad9bd701ebb31f  numpy-1.21.4-cp38-cp38-macosx_11_0_arm64.whl
34f3456f530ae8b44231c63082c8899fe9c983fd9b108c997c4b1c8c2d435333  numpy-1.21.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
4c9c23158b87ed0e70d9a50c67e5c0b3f75bcf2581a8e34668d4e9d7474d76c6  numpy-1.21.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
e4799be6a2d7d3c33699a6f77201836ac975b2e1b98c2a07f66a38f499cb50ce  numpy-1.21.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
bc988afcea53e6156546e5b2885b7efab089570783d9d82caf1cfd323b0bb3dd  numpy-1.21.4-cp38-cp38-win32.whl
170b2a0805c6891ca78c1d96ee72e4c3ed1ae0a992c75444b6ab20ff038ba2cd  numpy-1.21.4-cp38-cp38-win_amd64.whl
fde96af889262e85aa033f8ee1d3241e32bf36228318a61f1ace579df4e8170d  numpy-1.21.4-cp39-cp39-macosx_10_9_universal2.whl
c885bfc07f77e8fee3dc879152ba993732601f1f11de248d4f357f0ffea6a6d4  numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl
9e6f5f50d1eff2f2f752b3089a118aee1ea0da63d56c44f3865681009b0af162  numpy-1.21.4-cp39-cp39-macosx_11_0_arm64.whl
ad010846cdffe7ec27e3f933397f8a8d6c801a48634f419e3d075db27acf5880  numpy-1.21.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
c74c699b122918a6c4611285cc2cad4a3aafdb135c22a16ec483340ef97d573c  numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
9864424631775b0c052f3bd98bc2712d131b3e2cd95d1c0c68b91709170890b0  numpy-1.21.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
b1e2312f5b8843a3e4e8224b2b48fe16119617b8fc0a54df8f50098721b5bed2  numpy-1.21.4-cp39-cp39-win32.whl
e3c3e990274444031482a31280bf48674441e0a5b55ddb168f3a6db3e0c38ec8  numpy-1.21.4-cp39-cp39-win_amd64.whl
a3deb31bc84f2b42584b8c4001c85d1934dbfb4030827110bc36bfd11509b7bf  numpy-1.21.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
5d412381aa489b8be82ac5c6a9e99c3eb3f754245ad3f90ab5c339d92f25fb47  numpy-1.21.4.tar.gz
e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0  numpy-1.21.4.zip
numpy -

Published by charris almost 3 years ago

NumPy 1.21.3 Release Notes

The NumPy 1.21.3 is a maintenance release the fixes a few bugs
discovered after 1.21.2. It also provides 64 bit Python 3.10.0 wheels.
Note a few oddities about Python 3.10:

  • There are no 32 bit wheels for Windows, Mac, or Linux.
  • The Mac Intel builds are only available in universal2 wheels.

The Python versions supported in this release are 3.7-3.10. If you want
to compile your own version using gcc-11 you will need to use gcc-11.2+
to avoid problems.

Contributors

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

  • Aaron Meurer
  • Bas van Beek
  • Charles Harris
  • Developer-Ecosystem-Engineering +
  • Kevin Sheppard
  • Sebastian Berg
  • Warren Weckesser

Pull requests merged

A total of 8 pull requests were merged for this release.

  • #19745: ENH: Add dtype-support to 3 `generic/ndarray methods
  • #19955: BUG: Resolve Divide by Zero on Apple silicon + test failures...
  • #19958: MAINT: Mark type-check-only ufunc subclasses as ufunc aliases...
  • #19994: BUG: np.tan(np.inf) test failure
  • #20080: BUG: Correct incorrect advance in PCG with emulated int128
  • #20081: BUG: Fix NaT handling in the PyArray_CompareFunc for datetime...
  • #20082: DOC: Ensure that we add documentation also as to the dict for...
  • #20106: BUG: core: result_type(0, np.timedelta64(4)) would seg. fault.

Checksums

MD5

9acea9630856659ba48fdb582ecc37b4  numpy-1.21.3-cp310-cp310-macosx_10_9_universal2.whl
a70f80a4e74a3153a8307c4f0ea8d13d  numpy-1.21.3-cp310-cp310-macosx_11_0_arm64.whl
13cfe83efd261ea1c3d1eb02c1d3af83  numpy-1.21.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
8576bfd867834182269f72abbaa2e81e  numpy-1.21.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
8ac48f503f1e22c0c2b5d056772aca27  numpy-1.21.3-cp310-cp310-win_amd64.whl
cbe0d0d7623de3c2c7593f673d1a880a  numpy-1.21.3-cp37-cp37m-macosx_10_9_x86_64.whl
0967b18baba13e511c7eb48902a62b39  numpy-1.21.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
da54c9566f3e3f8c7d60efebfdf7e1ae  numpy-1.21.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
0aa000f3c10cf74bf47770577384b5c8  numpy-1.21.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
5683501bf91be25c53c52e3b083098c3  numpy-1.21.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
89e15d979533f8a314e0ab0648ee7153  numpy-1.21.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
a093fea475b5ed18bd21b3c79e68e388  numpy-1.21.3-cp37-cp37m-win32.whl
f906001213ed0902b1aecfaa12224e94  numpy-1.21.3-cp37-cp37m-win_amd64.whl
88a2cd378412220d618473dd273baf04  numpy-1.21.3-cp38-cp38-macosx_10_9_universal2.whl
1bc55202f604e30f338bc2ed27b561bc  numpy-1.21.3-cp38-cp38-macosx_10_9_x86_64.whl
9555dc6de8748958434e8f2feba98494  numpy-1.21.3-cp38-cp38-macosx_11_0_arm64.whl
93ad32cc87866e9242156bdadc61e5f5  numpy-1.21.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
7cb0b7dd6aee667ecdccae1829260186  numpy-1.21.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
34e6f5f9e9534ef8772f024170c2bd2d  numpy-1.21.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
54e6abfb8f600de2ccd1649b1fca820b  numpy-1.21.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
260ba58f2dc64e779eac7318ec92f36c  numpy-1.21.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
889202c6bdaf8c1ae0803925e9e1a8f7  numpy-1.21.3-cp38-cp38-win32.whl
980303a7e6317faf9a56ba8fc80795d9  numpy-1.21.3-cp38-cp38-win_amd64.whl
44d6bd26fb910710ab4002d0028c9020  numpy-1.21.3-cp39-cp39-macosx_10_9_universal2.whl
6f5b02152bd0b08a77b79657788ce59c  numpy-1.21.3-cp39-cp39-macosx_10_9_x86_64.whl
ad05d5c412d15e7880cd65cc6cdd4aac  numpy-1.21.3-cp39-cp39-macosx_11_0_arm64.whl
5b61a91221931af4a78c3bd20925a91f  numpy-1.21.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
df7344ae04c5a54249fa1b63a256ce61  numpy-1.21.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
c653a096da47b64b42e8f1536a21f7d4  numpy-1.21.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
e0d35451ba1c37f96e032bc6f75ccdf7  numpy-1.21.3-cp39-cp39-win32.whl
b2e1dc59b6fa224ce11728d94be740a6  numpy-1.21.3-cp39-cp39-win_amd64.whl
8ce925a0fcbc1062985026215d369276  numpy-1.21.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b8e6b7165f105bde0b45cd9ae34bfe20  numpy-1.21.3.tar.gz
59d986f5ccf3edfb7d4d14949c6666ed  numpy-1.21.3.zip

SHA256

508b0b513fa1266875524ba8a9ecc27b02ad771fe1704a16314dc1a816a68737  numpy-1.21.3-cp310-cp310-macosx_10_9_universal2.whl
5dfe9d6a4c39b8b6edd7990091fea4f852888e41919d0e6722fe78dd421db0eb  numpy-1.21.3-cp310-cp310-macosx_11_0_arm64.whl
8a10968963640e75cc0193e1847616ab4c718e83b6938ae74dea44953950f6b7  numpy-1.21.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
49c6249260890e05b8111ebfc391ed58b3cb4b33e63197b2ec7f776e45330721  numpy-1.21.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
f8f4625536926a155b80ad2bbff44f8cc59e9f2ad14cdda7acf4c135b4dc8ff2  numpy-1.21.3-cp310-cp310-win_amd64.whl
e54af82d68ef8255535a6cdb353f55d6b8cf418a83e2be3569243787a4f4866f  numpy-1.21.3-cp37-cp37m-macosx_10_9_x86_64.whl
f41b018f126aac18583956c54544db437f25c7ee4794bcb23eb38bef8e5e192a  numpy-1.21.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
50cd26b0cf6664cb3b3dd161ba0a09c9c1343db064e7c69f9f8b551f5104d654  numpy-1.21.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
4cc9b512e9fb590797474f58b7f6d1f1b654b3a94f4fa8558b48ca8b3cfc97cf  numpy-1.21.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
88a5d6b268e9ad18f3533e184744acdaa2e913b13148160b1152300c949bbb5f  numpy-1.21.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
3c09418a14471c7ae69ba682e2428cae5b4420a766659605566c0fa6987f6b7e  numpy-1.21.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
90bec6a86b348b4559b6482e2b684db4a9a7eed1fa054b86115a48d58fbbf62a  numpy-1.21.3-cp37-cp37m-win32.whl
043e83bfc274649c82a6f09836943e4a4aebe5e33656271c7dbf9621dd58b8ec  numpy-1.21.3-cp37-cp37m-win_amd64.whl
75621882d2230ab77fb6a03d4cbccd2038511491076e7964ef87306623aa5272  numpy-1.21.3-cp38-cp38-macosx_10_9_universal2.whl
188031f833bbb623637e66006cf75e933e00e7231f67e2b45cf8189612bb5dc3  numpy-1.21.3-cp38-cp38-macosx_10_9_x86_64.whl
160ccc1bed3a8371bf0d760971f09bfe80a3e18646620e9ded0ad159d9749baa  numpy-1.21.3-cp38-cp38-macosx_11_0_arm64.whl
29fb3dcd0468b7715f8ce2c0c2d9bbbaf5ae686334951343a41bd8d155c6ea27  numpy-1.21.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
32437f0b275c1d09d9c3add782516413e98cd7c09e6baf4715cbce781fc29912  numpy-1.21.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
e606e6316911471c8d9b4618e082635cfe98876007556e89ce03d52ff5e8fcf0  numpy-1.21.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
a99a6b067e5190ac6d12005a4d85aa6227c5606fa93211f86b1dafb16233e57d  numpy-1.21.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
dde972a1e11bb7b702ed0e447953e7617723760f420decb97305e66fb4afc54f  numpy-1.21.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
fe52dbe47d9deb69b05084abd4b0df7abb39a3c51957c09f635520abd49b29dd  numpy-1.21.3-cp38-cp38-win32.whl
75eb7cadc8da49302f5b659d40ba4f6d94d5045fbd9569c9d058e77b0514c9e4  numpy-1.21.3-cp38-cp38-win_amd64.whl
2a6ee9620061b2a722749b391c0d80a0e2ae97290f1b32e28d5a362e21941ee4  numpy-1.21.3-cp39-cp39-macosx_10_9_universal2.whl
5c4193f70f8069550a1788bd0cd3268ab7d3a2b70583dfe3b2e7f421e9aace06  numpy-1.21.3-cp39-cp39-macosx_10_9_x86_64.whl
28f15209fb535dd4c504a7762d3bc440779b0e37d50ed810ced209e5cea60d96  numpy-1.21.3-cp39-cp39-macosx_11_0_arm64.whl
c6c2d535a7beb1f8790aaa98fd089ceab2e3dd7ca48aca0af7dc60e6ef93ffe1  numpy-1.21.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
bffa2eee3b87376cc6b31eee36d05349571c236d1de1175b804b348dc0941e3f  numpy-1.21.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
cc14e7519fab2a4ed87d31f99c31a3796e4e1fe63a86ebdd1c5a1ea78ebd5896  numpy-1.21.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
dd0482f3fc547f1b1b5d6a8b8e08f63fdc250c58ce688dedd8851e6e26cff0f3  numpy-1.21.3-cp39-cp39-win32.whl
300321e3985c968e3ae7fbda187237b225f3ffe6528395a5b7a5407f73cf093e  numpy-1.21.3-cp39-cp39-win_amd64.whl
98339aa9911853f131de11010f6dd94c8cec254d3d1f7261528c3b3e3219f139  numpy-1.21.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
d0bba24083c01ae43457514d875f10d9ce4c1125d55b1e2573277b2410f2d068  numpy-1.21.3.tar.gz
63571bb7897a584ca3249c86dd01c10bcb5fe4296e3568b2e9c1a55356b6410e  numpy-1.21.3.zip
numpy -

Published by charris about 3 years ago

NumPy 1.21.2 Release Notes

The NumPy 1.21.2 is maintenance release that fixes bugs discovered after
1.21.1. It also provides 64 bit manylinux Python 3.10.0rc1 wheels for
downstream testing. Note that Python 3.10 is not yet final. There is
also preliminary support for Windows on ARM64 builds, but there is no
OpenBLAS for that platform and no wheels are available.

The Python versions supported for this release are 3.7-3.9. The 1.21.x
series is compatible with Python 3.10.0rc1 and Python 3.10 will be
officially supported after it is released. The previous problems with
gcc-11.1 have been fixed by gcc-11.2, check your version if you are
using gcc-11.

Contributors

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

  • Bas van Beek
  • Carl Johnsen +
  • Charles Harris
  • Gwyn Ciesla +
  • Matthieu Dartiailh
  • Matti Picus
  • Niyas Sait +
  • Ralf Gommers
  • Sayed Adel
  • Sebastian Berg

Pull requests merged

A total of 18 pull requests were merged for this release.

  • #19497: MAINT: set Python version for 1.21.x to <3.11
  • #19533: BUG: Fix an issue wherein importing numpy.typing could raise
  • #19646: MAINT: Update Cython version for Python 3.10.
  • #19648: TST: Bump the python 3.10 test version from beta4 to rc1
  • #19651: TST: avoid distutils.sysconfig in runtests.py
  • #19652: MAINT: add missing dunder method to nditer type hints
  • #19656: BLD, SIMD: Fix testing extra checks when -Werror isn't applicable...
  • #19657: BUG: Remove logical object ufuncs with bool output
  • #19658: MAINT: Include .coveragerc in source distributions to support...
  • #19659: BUG: Fix bad write in masked iterator output copy paths
  • #19660: ENH: Add support for windows on arm targets
  • #19661: BUG: add base to templated arguments for platlib
  • #19662: BUG,DEP: Non-default UFunc signature/dtype usage should be deprecated
  • #19666: MAINT: Add Python 3.10 to supported versions.
  • #19668: TST,BUG: Sanitize path-separators when running runtest.py
  • #19671: BLD: load extra flags when checking for libflame
  • #19676: BLD: update circleCI docker image
  • #19677: REL: Prepare for 1.21.2 release.

Checksums

MD5

c4d72c5f8aff59b5e48face558441e9f  numpy-1.21.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
eb09d0bfc0bc39ce3e323182ae779fcb  numpy-1.21.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e0bb19ea8cc13a5152085aa42d850077  numpy-1.21.2-cp37-cp37m-macosx_10_9_x86_64.whl
af7d21992179dfa3669a2a238b94a980  numpy-1.21.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
9acbaf0074af75d66ca8676b16cec03a  numpy-1.21.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
86b755c7ece248e5586a6a58259aa432  numpy-1.21.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
b45fbbb0ffabcabcc6dc4cf957713d45  numpy-1.21.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
6f23a3050b1482f9708d36928348d75d  numpy-1.21.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
ee45e263e6700b745c43511297385fe1  numpy-1.21.2-cp37-cp37m-win32.whl
6f587dc9ee9ec8700e77df4f3f987911  numpy-1.21.2-cp37-cp37m-win_amd64.whl
e500c1eae3903b7498886721b835d086  numpy-1.21.2-cp38-cp38-macosx_10_9_universal2.whl
ddef2b45ff5526e6314205108f2e3524  numpy-1.21.2-cp38-cp38-macosx_10_9_x86_64.whl
66b5a212ee2fe747cfc19f13dbfc2d15  numpy-1.21.2-cp38-cp38-macosx_11_0_arm64.whl
3ebfe9bcd744c57d3d189394fbbf04de  numpy-1.21.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
155a35f990b2e673cb7b361c83fa2313  numpy-1.21.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
89e2268d8607b6b363337fafde9fe6c9  numpy-1.21.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
e13968b5f61a3b2f33d4053da8ceaaf1  numpy-1.21.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
5bede1a84624d538d97513006f97fc06  numpy-1.21.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
351b5115ee56f1b598bfa9b479a2492c  numpy-1.21.2-cp38-cp38-win32.whl
8a36334d9d183b1ef3e4d3d23b7d0cb8  numpy-1.21.2-cp38-cp38-win_amd64.whl
b6aee8cf57f84da10b38566bde93056c  numpy-1.21.2-cp39-cp39-macosx_10_9_universal2.whl
20beaff42d793cb148621e0230d1b650  numpy-1.21.2-cp39-cp39-macosx_10_9_x86_64.whl
6e348361f3b8b75267dc27f3a6530944  numpy-1.21.2-cp39-cp39-macosx_11_0_arm64.whl
809bcd25dc485f31e2c13903d6ac748e  numpy-1.21.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
ff4256d8940c6bdce48364af37f99072  numpy-1.21.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b8b19e6667e39feef9f7f2e030945199  numpy-1.21.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
eedae53f1929779387476e7842dc5cb3  numpy-1.21.2-cp39-cp39-win32.whl
704f66b7ede6778283c33eea7a5b8b95  numpy-1.21.2-cp39-cp39-win_amd64.whl
8c5d2a0172f6f6861833a355b1bc57b0  numpy-1.21.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
55c11984b0a0ae28baa118052983f355  numpy-1.21.2.tar.gz
5638d5dae3ca387be562912312db842e  numpy-1.21.2.zip

SHA256

52a664323273c08f3b473548bf87c8145b7513afd63e4ebba8496ecd3853df13  numpy-1.21.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
51a7b9db0a2941434cd930dacaafe0fc9da8f3d6157f9d12f761bbde93f46218  numpy-1.21.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
9f2dc79c093f6c5113718d3d90c283f11463d77daa4e83aeeac088ec6a0bda52  numpy-1.21.2-cp37-cp37m-macosx_10_9_x86_64.whl
a55e4d81c4260386f71d22294795c87609164e22b28ba0d435850fbdf82fc0c5  numpy-1.21.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
426a00b68b0d21f2deb2ace3c6d677e611ad5a612d2c76494e24a562a930c254  numpy-1.21.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
298156f4d3d46815eaf0fcf0a03f9625fc7631692bd1ad851517ab93c3168fc6  numpy-1.21.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
09858463db6dd9f78b2a1a05c93f3b33d4f65975771e90d2cf7aadb7c2f66edf  numpy-1.21.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
805459ad8baaf815883d0d6f86e45b3b0b67d823a8f3fa39b1ed9c45eaf5edf1  numpy-1.21.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
f545c082eeb09ae678dd451a1b1dbf17babd8a0d7adea02897a76e639afca310  numpy-1.21.2-cp37-cp37m-win32.whl
b160b9a99ecc6559d9e6d461b95c8eec21461b332f80267ad2c10394b9503496  numpy-1.21.2-cp37-cp37m-win_amd64.whl
a5109345f5ce7ddb3840f5970de71c34a0ff7fceb133c9441283bb8250f532a3  numpy-1.21.2-cp38-cp38-macosx_10_9_universal2.whl
209666ce9d4a817e8a4597cd475b71b4878a85fa4b8db41d79fdb4fdee01dde2  numpy-1.21.2-cp38-cp38-macosx_10_9_x86_64.whl
c01b59b33c7c3ba90744f2c695be571a3bd40ab2ba7f3d169ffa6db3cfba614f  numpy-1.21.2-cp38-cp38-macosx_11_0_arm64.whl
e42029e184008a5fd3d819323345e25e2337b0ac7f5c135b7623308530209d57  numpy-1.21.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
7fdc7689daf3b845934d67cb221ba8d250fdca20ac0334fea32f7091b93f00d3  numpy-1.21.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
550564024dc5ceee9421a86fc0fb378aa9d222d4d0f858f6669eff7410c89bef  numpy-1.21.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
bf75d5825ef47aa51d669b03ce635ecb84d69311e05eccea083f31c7570c9931  numpy-1.21.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
a9da45b748caad72ea4a4ed57e9cd382089f33c5ec330a804eb420a496fa760f  numpy-1.21.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
e167b9805de54367dcb2043519382be541117503ce99e3291cc9b41ca0a83557  numpy-1.21.2-cp38-cp38-win32.whl
466e682264b14982012887e90346d33435c984b7fead7b85e634903795c8fdb0  numpy-1.21.2-cp38-cp38-win_amd64.whl
dd0e3651d210068d13e18503d75aaa45656eef51ef0b261f891788589db2cc38  numpy-1.21.2-cp39-cp39-macosx_10_9_universal2.whl
92a0ab128b07799dd5b9077a9af075a63467d03ebac6f8a93e6440abfea4120d  numpy-1.21.2-cp39-cp39-macosx_10_9_x86_64.whl
fde50062d67d805bc96f1a9ecc0d37bfc2a8f02b937d2c50824d186aa91f2419  numpy-1.21.2-cp39-cp39-macosx_11_0_arm64.whl
640c1ccfd56724f2955c237b6ccce2e5b8607c3bc1cc51d3933b8c48d1da3723  numpy-1.21.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
5de64950137f3a50b76ce93556db392e8f1f954c2d8207f78a92d1f79aa9f737  numpy-1.21.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b342064e647d099ca765f19672696ad50c953cac95b566af1492fd142283580f  numpy-1.21.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
30fc68307c0155d2a75ad19844224be0f2c6f06572d958db4e2053f816b859ad  numpy-1.21.2-cp39-cp39-win32.whl
b5e8590b9245803c849e09bae070a8e1ff444f45e3f0bed558dd722119eea724  numpy-1.21.2-cp39-cp39-win_amd64.whl
d96a6a7d74af56feb11e9a443150216578ea07b7450f7c05df40eec90af7f4a7  numpy-1.21.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
76af194fbc117934ec5bbe2ff15177adbd05aeed23f18ee209ed88edcd777e05  numpy-1.21.2.tar.gz
423216d8afc5923b15df86037c6053bf030d15cc9e3224206ef868c2d63dd6dc  numpy-1.21.2.zip
numpy -

Published by charris over 3 years ago

NumPy 1.21.1 Release Notes

The NumPy 1.21.1 is maintenance release that fixes bugs discovered after
the 1.21.0 release and updates OpenBLAS to v0.3.17 to deal with problems
on arm64.

The Python versions supported for this release are 3.7-3.9. The 1.21.x
series is compatible with development Python 3.10. Python 3.10 will be
officially supported after it is released.

⚠️ There are unresolved problems compiling NumPy 1.20.0 with gcc-11.1.

  • Optimization level -O3 results in many incorrect
    warnings when running the tests.
  • On some hardware NumPY will hang in an infinite loop.

Contributors

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

  • Bas van Beek
  • Charles Harris
  • Ganesh Kathiresan
  • Gregory R. Lee
  • Hugo Defois +
  • Kevin Sheppard
  • Matti Picus
  • Ralf Gommers
  • Sayed Adel
  • Sebastian Berg
  • Thomas J. Fan

Pull requests merged

A total of 26 pull requests were merged for this release.

  • #19311: REV,BUG: Replace NotImplemented with typing.Any
  • #19324: MAINT: Fixed the return-dtype of ndarray.real and imag
  • #19330: MAINT: Replace "dtype[Any]" with dtype in the definiton of...
  • #19342: DOC: Fix some docstrings that crash pdf generation.
  • #19343: MAINT: bump scipy-mathjax
  • #19347: BUG: Fix arr.flat.index for large arrays and big-endian machines
  • #19348: ENH: add numpy.f2py.get_include function
  • #19349: BUG: Fix reference count leak in ufunc dtype handling
  • #19350: MAINT: Annotate missing attributes of np.number subclasses
  • #19351: BUG: Fix cast safety and comparisons for zero sized voids
  • #19352: BUG: Correct Cython declaration in random
  • #19353: BUG: protect against accessing base attribute of a NULL subarray
  • #19365: BUG, SIMD: Fix detecting AVX512 features on Darwin
  • #19366: MAINT: remove print()'s in distutils template handling
  • #19390: ENH: SIMD architectures to show_config
  • #19391: BUG: Do not raise deprecation warning for all nans in unique...
  • #19392: BUG: Fix NULL special case in object-to-any cast code
  • #19430: MAINT: Use arm64-graviton2 for testing on travis
  • #19495: BUILD: update OpenBLAS to v0.3.17
  • #19496: MAINT: Avoid unicode characters in division SIMD code comments
  • #19499: BUG, SIMD: Fix infinite loop during count non-zero on GCC-11
  • #19500: BUG: fix a numpy.npiter leak in npyiter_multi_index_set
  • #19501: TST: Fix a GenericAlias test failure for python 3.9.0
  • #19502: MAINT: Start testing with Python 3.10.0b3.
  • #19503: MAINT: Add missing dtype overloads for object- and ctypes-based...
  • #19510: REL: Prepare for NumPy 1.21.1 release.

Checksums

MD5

d88af78c155cb92ce5535724ed13ed73  numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl
946e54ec9d174ec90db8ae07a4c4ae2f  numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
84d7f8534fa3ce1a8c2e2eab18e514de  numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
2e256d7862047967f2a7dbff8b8e9d6c  numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
4887ff09cc0652f3f1d9e0f40d1add63  numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
bbe00679ce0ae484bb46776f64e00e32  numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
b8eff5ba6bb920f3e65409abcfe7a55e  numpy-1.21.1-cp37-cp37m-win32.whl
d6ab781ad4537a818663a37392bdf647  numpy-1.21.1-cp37-cp37m-win_amd64.whl
f974f7a90567e082b16817e1218eb059  numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl
37fb814042195516db4c5eedc23f65ef  numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl
2840e0ed51c8ebfb6fded7f1acfed810  numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl
d87ed548450f324a3a6a3a230991e90a  numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
e5e0e271fb18986887920f24b9ad8ec3  numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
f060727f195388df3f3c1e2c43a8d247  numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
26b0cc05d6f59241f401c16a6fe9300e  numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
dac4489fdaeffd24d402a555e61b4087  numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
c248a8f07bb458660274eab769dcc1e2  numpy-1.21.1-cp38-cp38-win32.whl
52386872b66b108de80b5447d0e3f6b1  numpy-1.21.1-cp38-cp38-win_amd64.whl
1a730aa7303421f31c2bca5a343010bb  numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl
141701393752d472456d4a15f9a554e4  numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl
33a9c001675f708aebc06f0a653378c1  numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl
6b9482c5090f532285313ad2cf48d319  numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
94fa7591ad4e51a85cb17bcec170b986  numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
f580b2ce2fb9cead163bab3f1d88fba7  numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
238930d877b5d8a012b5b1bbc994ebb1  numpy-1.21.1-cp39-cp39-win32.whl
4014c63ac2a1c3e1df95f76feb14816e  numpy-1.21.1-cp39-cp39-win_amd64.whl
7cff22c1a04fdee710d38bd9468edbf1  numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
033726e7ec59eea6b23307dcec35a37b  numpy-1.21.1.tar.gz
1d016e05851a4ba85307f3246eb569aa  numpy-1.21.1.zip

SHA256

38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50  numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl
fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a  numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062  numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1  numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671  numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e  numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172  numpy-1.21.1-cp37-cp37m-win32.whl
7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8  numpy-1.21.1-cp37-cp37m-win_amd64.whl
95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16  numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl
635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267  numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl
4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6  numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl
8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63  numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af  numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5  numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68  numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8  numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd  numpy-1.21.1-cp38-cp38-win32.whl
9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214  numpy-1.21.1-cp38-cp38-win_amd64.whl
d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f  numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl
d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b  numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl
25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac  numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl
8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1  numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1  numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a  numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2  numpy-1.21.1-cp39-cp39-win32.whl
01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33  numpy-1.21.1-cp39-cp39-win_amd64.whl
2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4  numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
504ced5d900fd5724c74ebf5dbb03572c04074bec9baa24b5646c66a2450e654  numpy-1.21.1.tar.gz
dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd  numpy-1.21.1.zip
numpy -

Published by charris over 3 years ago

NumPy 1.21.0 Release Notes

The NumPy 1.21.0 release highlights are

  • continued SIMD work covering more functions and platforms,
  • initial work on the new dtype infrastructure and casting,
  • universal2 wheels for Python 3.8 and Python 3.9 on Mac,
  • improved documentation,
  • improved annotations,
  • new PCG64DXSM bitgenerator for random numbers.

In addition there are the usual large number of bug fixes and other
improvements.

The Python versions supported for this release are 3.7-3.9. Official
support for Python 3.10 will be added when it is released.

⚠️ Warning: there are unresolved problems compiling NumPy 1.21.0 with gcc-11.1 .

  • Optimization level -O3 results in many wrong warnings when running the tests.
  • On some hardware NumPy will hang in an infinite loop.

New functions

Add PCG64DXSM BitGenerator

Uses of the PCG64 BitGenerator in a massively-parallel context have
been shown to have statistical weaknesses that were not apparent at the
first release in numpy 1.17. Most users will never observe this weakness
and are safe to continue to use PCG64. We have introduced a new
PCG64DXSM BitGenerator that will eventually become the new default
BitGenerator implementation used by default_rng in future releases.
PCG64DXSM solves the statistical weakness while preserving the
performance and the features of PCG64.

See upgrading-pcg64 for more details.

(gh-18906)

Expired deprecations

  • The shape argument numpy.unravel_index cannot be
    passed as dims keyword argument anymore. (Was deprecated in NumPy
    1.16.)

    (gh-17900)

  • The function PyUFunc_GenericFunction has been disabled. It was
    deprecated in NumPy 1.19. Users should call the ufunc directly using
    the Python API.

    (gh-18697)

  • The function PyUFunc_SetUsesArraysAsData has been disabled. It was
    deprecated in NumPy 1.19.

    (gh-18697)

  • The class PolyBase has been removed (deprecated in numpy 1.9.0).
    Please use the abstract ABCPolyBase class instead.

    (gh-18963)

  • The unused PolyError and PolyDomainError exceptions are removed.

    (gh-18963)

Deprecations

The .dtype attribute must return a dtype

A DeprecationWarning is now given if the .dtype attribute of an
object passed into np.dtype or as a dtype=obj argument is not a
dtype. NumPy will stop attempting to recursively coerce the result of
.dtype.

(gh-13578)

Inexact matches for numpy.convolve and numpy.correlate are deprecated

numpy.convolve and numpy.correlate now
emit a warning when there are case insensitive and/or inexact matches
found for mode argument in the functions. Pass full "same",
"valid", "full" strings instead of "s", "v", "f" for the
mode argument.

(gh-17492)

np.typeDict has been formally deprecated

np.typeDict is a deprecated alias for np.sctypeDict and has been so
for over 14 years
(6689502).
A deprecation warning will now be issued whenever getting np.typeDict.

(gh-17586)

Exceptions will be raised during array-like creation

When an object raised an exception during access of the special
attributes __array__ or __array_interface__, this exception was
usually ignored. A warning is now given when the exception is anything
but AttributeError. To silence the warning, the type raising the
exception has to be adapted to raise an AttributeError.

(gh-19001)

Four ndarray.ctypes methods have been deprecated

Four methods of the ndarray.ctypes object have been
deprecated, as they are (undocumentated) implementation artifacts of
their respective properties.

The methods in question are:

  • _ctypes.get_data (use _ctypes.data instead)
  • _ctypes.get_shape (use _ctypes.shape instead)
  • _ctypes.get_strides (use _ctypes.strides instead)
  • _ctypes.get_as_parameter (use _ctypes._as_parameter_ instead)

(gh-19031)

Expired deprecations

  • The shape argument numpy.unravel_index] cannot be
    passed as dims keyword argument anymore. (Was deprecated in NumPy
    1.16.)

    (gh-17900)

  • The function PyUFunc_GenericFunction has been disabled. It was
    deprecated in NumPy 1.19. Users should call the ufunc directly using
    the Python API.

    (gh-18697)

  • The function PyUFunc_SetUsesArraysAsData has been disabled. It was
    deprecated in NumPy 1.19.

    (gh-18697)

Remove deprecated PolyBase and unused PolyError and PolyDomainError

The class PolyBase has been removed (deprecated in numpy 1.9.0).
Please use the abstract ABCPolyBase class instead.

Furthermore, the unused PolyError and PolyDomainError exceptions are
removed from the numpy.polynomial.

(gh-18963)

Compatibility notes

Error type changes in universal functions

The universal functions may now raise different errors on invalid input
in some cases. The main changes should be that a RuntimeError was
replaced with a more fitting TypeError. When multiple errors were
present in the same call, NumPy may now raise a different one.

(gh-15271)

__array_ufunc__ argument validation

NumPy will now partially validate arguments before calling
__array_ufunc__. Previously, it was possible to pass on invalid
arguments (such as a non-existing keyword argument) when dispatch was
known to occur.

(gh-15271)

__array_ufunc__ and additional positional arguments

Previously, all positionally passed arguments were checked for
__array_ufunc__ support. In the case of reduce, accumulate, and
reduceat all arguments may be passed by position. This means that when
they were passed by position, they could previously have been asked to
handle the ufunc call via __array_ufunc__. Since this depended on the
way the arguments were passed (by position or by keyword), NumPy will
now only dispatch on the input and output array. For example, NumPy will
never dispatch on the where array in a reduction such as
np.add.reduce.

(gh-15271)

Validate input values in Generator.uniform

Checked that high - low >= 0 in np.random.Generator.uniform. Raises
ValueError if low > high. Previously out-of-order inputs were
accepted and silently swapped, so that if low > high, the value
generated was high + (low - high) * random().

(gh-17921)

/usr/include removed from default include paths

The default include paths when building a package with numpy.distutils
no longer include /usr/include. This path is normally added by the
compiler, and hardcoding it can be problematic. In case this causes a
problem, please open an issue. A workaround is documented in PR 18658.

(gh-18658)

Changes to comparisons with dtype=...

When the dtype= (or signature) arguments to comparison ufuncs
(equal, less, etc.) is used, this will denote the desired output
dtype in the future. This means that:

np.equal(2, 3, dtype=object)

will give a FutureWarning that it will return an object array in the
future, which currently happens for:

np.equal(None, None, dtype=object)

due to the fact that np.array(None) is already an object array. (This
also happens for some other dtypes.)

Since comparisons normally only return boolean arrays, providing any
other dtype will always raise an error in the future and give a
DeprecationWarning now.

(gh-18718)

Changes to dtype and signature arguments in ufuncs

The universal function arguments dtype and signature which are also
valid for reduction such as np.add.reduce (which is the implementation
for np.sum) will now issue a warning when the dtype provided is not
a "basic" dtype.

NumPy almost always ignored metadata, byteorder or time units on these
inputs. NumPy will now always ignore it and raise an error if byteorder
or time unit changed. The following are the most important examples of
changes which will give the error. In some cases previously the
information stored was not ignored, in all of these an error is now
raised:

# Previously ignored the byte-order (affect if non-native)
np.add(3, 5, dtype=">i32")

# The biggest impact is for timedelta or datetimes:
arr = np.arange(10, dtype="m8[s]")

# The examples always ignored the time unit "ns":
np.add(arr, arr, dtype="m8[ns]")
np.maximum.reduce(arr, dtype="m8[ns]")

# The following previously did use "ns" (as opposed to `arr.dtype`)
np.add(3, 5, dtype="m8[ns]")  # Now return generic time units
np.maximum(arr, arr, dtype="m8[ns]")  # Now returns "s" (from `arr`)

The same applies for functions like np.sum which use these internally.
This change is necessary to achieve consistent handling within NumPy.

If you run into these, in most cases pass for example
dtype=np.timedelta64 which clearly denotes a general timedelta64
without any unit or byte-order defined. If you need to specify the
output dtype precisely, you may do so by either casting the inputs or
providing an output array using out=.

NumPy may choose to allow providing an exact output dtype here in the
future, which would be preceded by a FutureWarning.

(gh-18718)

Ufunc signature=... and dtype= generalization and casting

The behaviour for np.ufunc(1.0, 1.0, signature=...) or
np.ufunc(1.0, 1.0, dtype=...) can now yield different loops in 1.21
compared to 1.20 because of changes in promotion. When signature was
previously used, the casting check on inputs was relaxed, which could
lead to downcasting inputs unsafely especially if combined with
casting="unsafe".

Casting is now guaranteed to be safe. If a signature is only partially
provided, for example using signature=("float64", None, None), this
could lead to no loop being found (an error). In that case, it is
necessary to provide the complete signature to enforce casting the
inputs. If dtype="float64" is used or only outputs are set (e.g.
signature=(None, None, "float64") the is unchanged. We expect that
very few users are affected by this change.

Further, the meaning of dtype="float64" has been slightly modified and
now strictly enforces only the correct output (and not input) DTypes.
This means it is now always equivalent to:

signature=(None, None, "float64")

(If the ufunc has two inputs and one output). Since this could lead to
no loop being found in some cases, NumPy will normally also search for
the loop:

signature=("float64", "float64", "float64")

if the first search failed. In the future, this behaviour may be
customized to achieve the expected results for more complex ufuncs. (For
some universal functions such as np.ldexp inputs can have different
DTypes.)

(gh-18880)

Distutils forces strict floating point model on clang

NumPy distutils will now always add the -ffp-exception-behavior=strict
compiler flag when compiling with clang. Clang defaults to a non-strict
version, which allows the compiler to generate code that does not set
floating point warnings/errors correctly.

(gh-19049)

C API changes

Use of ufunc->type_resolver and "type tuple"

NumPy now normalizes the "type tuple" argument to the type resolver
functions before calling it. Note that in the use of this type resolver
is legacy behaviour and NumPy will not do so when possible. Calling
ufunc->type_resolver or PyUFunc_DefaultTypeResolver is strongly
discouraged and will now enforce a normalized type tuple if done. Note
that this does not affect providing a type resolver, which is expected
to keep working in most circumstances. If you have an unexpected
use-case for calling the type resolver, please inform the NumPy
developers so that a solution can be found.

(gh-18718)

New Features

Added a mypy plugin for handling platform-specific numpy.number precisions

A mypy plugin is now available for
automatically assigning the (platform-dependent) precisions of certain
numpy.number subclasses, including the likes of
numpy.int_, numpy.intp and
numpy.longlong. See the documentation on
scalar types <arrays.scalars.built-in>
for a comprehensive overview of the affected classes.

Note that while usage of the plugin is completely optional, without it
the precision of above-mentioned classes will be inferred as
typing.Any.

To enable the plugin, one must add it to their mypy [configuration file]
(https://mypy.readthedocs.io/en/stable/config_file.html):

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-17843)

Let the mypy plugin manage extended-precision numpy.number subclasses

The mypy plugin, introduced in
numpy/numpy#17843, has
been expanded: the plugin now removes annotations for platform-specific
extended-precision types that are not available to the platform in
question. For example, it will remove numpy.float128
when not available.

Without the plugin all extended-precision types will, as far as mypy
is concerned, be available on all platforms.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin
                                                                        cn

(gh-18322)

New min_digits argument for printing float values

A new min_digits argument has been added to the dragon4 float printing
functions numpy.format_float_positional and
numpy.format_float_scientific. This kwd guarantees
that at least the given number of digits will be printed when printing
in unique=True mode, even if the extra digits are unnecessary to
uniquely specify the value. It is the counterpart to the precision
argument which sets the maximum number of digits to be printed. When
unique=False in fixed precision mode, it has no effect and the precision
argument fixes the number of digits.

(gh-18629)

f2py now recognizes Fortran abstract interface blocks

numpy.f2py can now parse abstract interface blocks.

(gh-18695)

BLAS and LAPACK configuration via environment variables

Autodetection of installed BLAS and LAPACK libraries can be bypassed by
using the NPY_BLAS_LIBS and NPY_LAPACK_LIBS environment variables.
Instead, the link flags in these environment variables will be used
directly, and the language is assumed to be F77. This is especially
useful in automated builds where the BLAS and LAPACK that are installed
are known exactly. A use case is replacing the actual implementation at
runtime via stub library links.

If NPY_CBLAS_LIBS is set (optional in addition to NPY_BLAS_LIBS),
this will be used as well, by defining HAVE_CBLAS and appending the
environment variable content to the link flags.

(gh-18737)

A runtime-subcriptable alias has been added for ndarray

numpy.typing.NDArray has been added, a runtime-subscriptable alias for
np.ndarray[Any, np.dtype[~Scalar]]. The new type alias can be used for
annotating arrays with a given dtype and unspecified shape.

NumPy does not support the annotating of array shapes as of 1.21,
this is expected to change in the future though (see
646{.interpreted-text role="pep"}).

Examples

>>> import numpy as np
>>> import numpy.typing as npt

>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]

>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)

>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
...     return np.array(a)

(gh-18935)

Improvements

Arbitrary period option for numpy.unwrap

The size of the interval over which phases are unwrapped is no longer
restricted to 2 * pi. This is especially useful for unwrapping
degrees, but can also be used for other intervals.

>>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
>>> phase_deg
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
       -180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
       -180.])

>>> unwrap(phase_deg, period=360)
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
        180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
        540.])

(gh-16987)

np.unique now returns single NaN

When np.unique operated on an array with multiple NaN entries, its
return included a NaN for each entry that was NaN in the original
array. This is now improved such that the returned array contains just
one NaN as the last element.

Also for complex arrays all NaN values are considered equivalent (no
matter whether the NaN is in the real or imaginary part). As the
representant for the returned array the smallest one in the
lexicographical order is chosen - see np.sort for how the
lexicographical order is defined for complex arrays.

(gh-18070)

Generator.rayleigh and Generator.geometric performance improved

The performance of Rayleigh and geometric random variate generation in
Generator has improved. These are both transformation of exponential
random variables and the slow log-based inverse cdf transformation has
been replaced with the Ziggurat-based exponential variate generator.

This change breaks the stream of variates generated when variates from
either of these distributions are produced.

(gh-18666)

Placeholder annotations have been improved

All placeholder annotations, that were previously annotated as
typing.Any, have been improved. Where appropiate they have been
replaced with explicit function definitions, classes or other
miscellaneous objects.

(gh-18934)

Performance improvements

Improved performance in integer division of NumPy arrays

Integer division of NumPy arrays now uses
libdivide when the divisor is a constant. With
the usage of libdivide and other minor optimizations, there is a large
speedup. The // operator and np.floor_divide makes use of the new
changes.

(gh-17727)

Improve performance of np.save and np.load for small arrays

np.save is now a lot faster for small arrays.

np.load is also faster for small arrays, but only when serializing
with a version >= (3, 0).

Both are done by removing checks that are only relevant for Python 2,
while still maintaining compatibility with arrays which might have been
created by Python 2.

(gh-18657)

Changes

numpy.piecewise output class now matches the input class

When numpy.ndarray subclasses are used on input to
numpy.piecewise, they are passed on to the functions.
The output will now be of the same subclass as well.

(gh-18110)

Enable Accelerate Framework

With the release of macOS 11.3, several different issues that numpy was
encountering when using Accelerate Framework's implementation of BLAS
and LAPACK should be resolved. This change enables the Accelerate
Framework as an option on macOS. If additional issues are found, please
file a bug report against Accelerate using the developer feedback
assistant tool (https://developer.apple.com/bug-reporting/). We intend
to address issues promptly and plan to continue supporting and updating
our BLAS and LAPACK libraries.

(gh-18874)

Checksums

MD5

e4b31fd5cb97e50238b3dbb3487b2cb7  numpy-1.21.0-cp37-cp37m-macosx_10_9_x86_64.whl
111e09f3fddd8e14540cf56493dd786a  numpy-1.21.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
e2fc116043d1b91c627f3c8884151f33  numpy-1.21.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
82e267da77628b96cdf8832e475f6ef3  numpy-1.21.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
baa416fe77b840a19556f5d808eb3165  numpy-1.21.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
aba24836f51bb0a855434c41de122e3d  numpy-1.21.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
aa9f94fa6eabfa193902676825934196  numpy-1.21.0-cp37-cp37m-win32.whl
6d771c7670b95adb62627e383c883804  numpy-1.21.0-cp37-cp37m-win_amd64.whl
e6d77cae6054b738603415faf9cb4358  numpy-1.21.0-cp38-cp38-macosx_10_9_universal2.whl
9589cfe5a22f54956101b7131be5cabd  numpy-1.21.0-cp38-cp38-macosx_10_9_x86_64.whl
5faa22dffa53cfe7d1d40d48aa817670  numpy-1.21.0-cp38-cp38-macosx_11_0_arm64.whl
b81545a2924a201817d433c3bad0bc7d  numpy-1.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
3e60589e3325a3583880bf6998cfaca6  numpy-1.21.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
baf409eb08b7462899d45c42a7c1d854  numpy-1.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
4f311de7973503dde6ad3915f158fd63  numpy-1.21.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
1a79926ad8d3dda573f5c2d8d06e0e38  numpy-1.21.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
0b39eb396a1d5983f6eb2075a867a1a6  numpy-1.21.0-cp38-cp38-win32.whl
5c8c3e94f5a55123b1a0d3a4df14b505  numpy-1.21.0-cp38-cp38-win_amd64.whl
c6e9fa30e82e3ca1551d2f048d4a1dc4  numpy-1.21.0-cp39-cp39-macosx_10_9_universal2.whl
96d7d3a438296bfc68b819b3624936a5  numpy-1.21.0-cp39-cp39-macosx_10_9_x86_64.whl
31cf2152b4151912be9d165633a7d8eb  numpy-1.21.0-cp39-cp39-macosx_11_0_arm64.whl
e49cd2db6ec712b8b1d516154b5a034a  numpy-1.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
c10e13fef152ed1c64151c8b6f6d0799  numpy-1.21.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
a627acdfcd302807cf8592d5bd958d35  numpy-1.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
e2287cd16300b363d376b661646fded9  numpy-1.21.0-cp39-cp39-win32.whl
29d1bf596981d930bb1c95c944b4b3d8  numpy-1.21.0-cp39-cp39-win_amd64.whl
42d05fcbab6137a404be36f27fc254f0  numpy-1.21.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
003e34bd2cba06e7fe299a864964ea24  numpy-1.21.0.tar.gz
930ebfdffd10fed701a7823691f02983  numpy-1.21.0.zip

SHA256

d5caa946a9f55511e76446e170bdad1d12d6b54e17a2afe7b189112ed4412bb8  numpy-1.21.0-cp37-cp37m-macosx_10_9_x86_64.whl
ac4fd578322842dbda8d968e3962e9f22e862b6ec6e3378e7415625915e2da4d  numpy-1.21.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
598fe100b2948465cf3ed64b1a326424b5e4be2670552066e17dfaa67246011d  numpy-1.21.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
7c55407f739f0bfcec67d0df49103f9333edc870061358ac8a8c9e37ea02fcd2  numpy-1.21.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
75579acbadbf74e3afd1153da6177f846212ea2a0cc77de53523ae02c9256513  numpy-1.21.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
cc367c86eb87e5b7c9592935620f22d13b090c609f1b27e49600cd033b529f54  numpy-1.21.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
d89b0dc7f005090e32bb4f9bf796e1dcca6b52243caf1803fdd2b748d8561f63  numpy-1.21.0-cp37-cp37m-win32.whl
eda2829af498946c59d8585a9fd74da3f810866e05f8df03a86f70079c7531dd  numpy-1.21.0-cp37-cp37m-win_amd64.whl
1a784e8ff7ea2a32e393cc53eb0003eca1597c7ca628227e34ce34eb11645a0e  numpy-1.21.0-cp38-cp38-macosx_10_9_universal2.whl
bba474a87496d96e61461f7306fba2ebba127bed7836212c360f144d1e72ac54  numpy-1.21.0-cp38-cp38-macosx_10_9_x86_64.whl
fd0a359c1c17f00cb37de2969984a74320970e0ceef4808c32e00773b06649d9  numpy-1.21.0-cp38-cp38-macosx_11_0_arm64.whl
e4d5a86a5257843a18fb1220c5f1c199532bc5d24e849ed4b0289fb59fbd4d8f  numpy-1.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
620732f42259eb2c4642761bd324462a01cdd13dd111740ce3d344992dd8492f  numpy-1.21.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b9205711e5440954f861ceeea8f1b415d7dd15214add2e878b4d1cf2bcb1a914  numpy-1.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ad09f55cc95ed8d80d8ab2052f78cc21cb231764de73e229140d81ff49d8145e  numpy-1.21.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
a1f2fb2da242568af0271455b89aee0f71e4e032086ee2b4c5098945d0e11cf6  numpy-1.21.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
e58ddb53a7b4959932f5582ac455ff90dcb05fac3f8dcc8079498d43afbbde6c  numpy-1.21.0-cp38-cp38-win32.whl
d2910d0a075caed95de1a605df00ee03b599de5419d0b95d55342e9a33ad1fb3  numpy-1.21.0-cp38-cp38-win_amd64.whl
a290989cd671cd0605e9c91a70e6df660f73ae87484218e8285c6522d29f6e38  numpy-1.21.0-cp39-cp39-macosx_10_9_universal2.whl
3537b967b350ad17633b35c2f4b1a1bbd258c018910b518c30b48c8e41272717  numpy-1.21.0-cp39-cp39-macosx_10_9_x86_64.whl
ccc6c650f8700ce1e3a77668bb7c43e45c20ac06ae00d22bdf6760b38958c883  numpy-1.21.0-cp39-cp39-macosx_11_0_arm64.whl
709884863def34d72b183d074d8ba5cfe042bc3ff8898f1ffad0209161caaa99  numpy-1.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
bebab3eaf0641bba26039fb0b2c5bf9b99407924b53b1ea86e03c32c64ef5aef  numpy-1.21.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
cf680682ad0a3bef56dae200dbcbac2d57294a73e5b0f9864955e7dd7c2c2491  numpy-1.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d95d16204cd51ff1a1c8d5f9958ce90ae190be81d348b514f9be39f878b8044a  numpy-1.21.0-cp39-cp39-win32.whl
2ba579dde0563f47021dcd652253103d6fd66165b18011dce1a0609215b2791e  numpy-1.21.0-cp39-cp39-win_amd64.whl
3c40e6b860220ed862e8097b8f81c9af6d7405b723f4a7af24a267b46f90e461  numpy-1.21.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b662c841b29848c04d9134f31dbaa7d4c8e673f45bb3a5f28d02f49c424d558a  numpy-1.21.0.tar.gz
e80fe25cba41c124d04c662f33f6364909b985f2eb5998aaa5ae4b9587242cce  numpy-1.21.0.zip
numpy -

Published by charris over 3 years ago

NumPy 1.21.0 Release Notes

The NumPy 1.21.0 release highlights are

  • continued SIMD work covering more functions and platforms,
  • initial work on the new dtype infrastructure and casting,
  • universal2 wheels for Python 3.8 and Python 3.9 on Mac,
  • improved documentation,
  • improved annotations,
  • new PCG64DXSM bitgenerator for random numbers.

In addition there are the usual large number of bug fixes and other
improvements.

The Python versions supported for this release are 3.7-3.9. Official
support for Python 3.10 will be added when it is released.

New functions

Add PCG64DXSM BitGenerator

Uses of the PCG64 BitGenerator in a massively-parallel context have
been shown to have statistical weaknesses that were not apparent at the
first release in numpy 1.17. Most users will never observe this weakness
and are safe to continue to use PCG64. We have introduced a new
PCG64DXSM BitGenerator that will eventually become the new default
BitGenerator implementation used by default_rng in future releases.
PCG64DXSM solves the statistical weakness while preserving the
performance and the features of PCG64.

See upgrading-pcg64 for more details.

(gh-18906)

Expired deprecations

  • The shape argument numpy.unravel_index cannot be
    passed as dims keyword argument anymore. (Was deprecated in NumPy
    1.16.)

    (gh-17900)

  • The function PyUFunc_GenericFunction has been disabled. It was
    deprecated in NumPy 1.19. Users should call the ufunc directly using
    the Python API.

    (gh-18697)

  • The function PyUFunc_SetUsesArraysAsData has been disabled. It was
    deprecated in NumPy 1.19.

    (gh-18697)

  • The class PolyBase has been removed (deprecated in numpy 1.9.0).
    Please use the abstract ABCPolyBase class instead.

    (gh-18963)

  • The unused PolyError and PolyDomainError exceptions are removed.

    (gh-18963)

Deprecations

Inexact matches for numpy.convolve and numpy.correlate are deprecated

numpy.convolve and numpy.correlate now
emit a warning when there are case insensitive and/or inexact matches
found for mode argument in the functions. Pass full "same",
"valid", "full" strings instead of "s", "v", "f" for the
mode argument.

(gh-17492)

np.typeDict has been formally deprecated

np.typeDict is a deprecated alias for np.sctypeDict and has been so
for over 14 years
(6689502).
A deprecation warning will now be issued whenever getting np.typeDict.

(gh-17586)

Exceptions will be raised during array-like creation

When an object raised an exception during access of the special
attributes __array__ or __array_interface__, this exception was
usually ignored. A warning is now given when the exception is anything
but AttributeError. To silence the warning, the type raising the
exception has to be adapted to raise an AttributeError.

(gh-19001)

Four ndarray.ctypes methods have been deprecated

Four methods of the ndarray.ctypes object have been
deprecated, as they are (undocumentated) implementation artifacts of
their respective properties.

The methods in question are:

  • _ctypes.get_data (use _ctypes.data instead)
  • _ctypes.get_shape (use _ctypes.shape instead)
  • _ctypes.get_strides (use _ctypes.strides instead)
  • _ctypes.get_as_parameter (use _ctypes._as_parameter_ instead)

(gh-19031)

Expired deprecations

  • The shape argument numpy.unravel_index] cannot be
    passed as dims keyword argument anymore. (Was deprecated in NumPy
    1.16.)

    (gh-17900)

  • The function PyUFunc_GenericFunction has been disabled. It was
    deprecated in NumPy 1.19. Users should call the ufunc directly using
    the Python API.

    (gh-18697)

  • The function PyUFunc_SetUsesArraysAsData has been disabled. It was
    deprecated in NumPy 1.19.

    (gh-18697)

Remove deprecated PolyBase and unused PolyError and PolyDomainError

The class PolyBase has been removed (deprecated in numpy 1.9.0).
Please use the abstract ABCPolyBase class instead.

Furthermore, the unused PolyError and PolyDomainError exceptions are
removed from the numpy.polynomial.

(gh-18963)

Compatibility notes

Error type changes in universal functions

The universal functions may now raise different errors on invalid input
in some cases. The main changes should be that a RuntimeError was
replaced with a more fitting TypeError. When multiple errors were
present in the same call, NumPy may now raise a different one.

(gh-15271)

__array_ufunc__ argument validation

NumPy will now partially validate arguments before calling
__array_ufunc__. Previously, it was possible to pass on invalid
arguments (such as a non-existing keyword argument) when dispatch was
known to occur.

(gh-15271)

__array_ufunc__ and additional positional arguments

Previously, all positionally passed arguments were checked for
__array_ufunc__ support. In the case of reduce, accumulate, and
reduceat all arguments may be passed by position. This means that when
they were passed by position, they could previously have been asked to
handle the ufunc call via __array_ufunc__. Since this depended on the
way the arguments were passed (by position or by keyword), NumPy will
now only dispatch on the input and output array. For example, NumPy will
never dispatch on the where array in a reduction such as
np.add.reduce.

(gh-15271)

Validate input values in Generator.uniform

Checked that high - low >= 0 in np.random.Generator.uniform. Raises
ValueError if low > high. Previously out-of-order inputs were
accepted and silently swapped, so that if low > high, the value
generated was high + (low - high) * random().

(gh-17921)

/usr/include removed from default include paths

The default include paths when building a package with numpy.distutils
no longer include /usr/include. This path is normally added by the
compiler, and hardcoding it can be problematic. In case this causes a
problem, please open an issue. A workaround is documented in PR 18658.

(gh-18658)

Changes to comparisons with dtype=...

When the dtype= (or signature) arguments to comparison ufuncs
(equal, less, etc.) is used, this will denote the desired output
dtype in the future. This means that:

np.equal(2, 3, dtype=object)

will give a FutureWarning that it will return an object array in the
future, which currently happens for:

np.equal(None, None, dtype=object)

due to the fact that np.array(None) is already an object array. (This
also happens for some other dtypes.)

Since comparisons normally only return boolean arrays, providing any
other dtype will always raise an error in the future and give a
DeprecationWarning now.

(gh-18718)

Changes to dtype and signature arguments in ufuncs

The universal function arguments dtype and signature which are also
valid for reduction such as np.add.reduce (which is the implementation
for np.sum) will now issue a warning when the dtype provided is not
a "basic" dtype.

NumPy almost always ignored metadata, byteorder or time units on these
inputs. NumPy will now always ignore it and raise an error if byteorder
or time unit changed. The following are the most important examples of
changes which will give the error. In some cases previously the
information stored was not ignored, in all of these an error is now
raised:

# Previously ignored the byte-order (affect if non-native)
np.add(3, 5, dtype=">i32")

# The biggest impact is for timedelta or datetimes:
arr = np.arange(10, dtype="m8[s]")

# The examples always ignored the time unit "ns":
np.add(arr, arr, dtype="m8[ns]")
np.maximum.reduce(arr, dtype="m8[ns]")

# The following previously did use "ns" (as opposed to `arr.dtype`)
np.add(3, 5, dtype="m8[ns]")  # Now return generic time units
np.maximum(arr, arr, dtype="m8[ns]")  # Now returns "s" (from `arr`)

The same applies for functions like np.sum which use these internally.
This change is necessary to achieve consistent handling within NumPy.

If you run into these, in most cases pass for example
dtype=np.timedelta64 which clearly denotes a general timedelta64
without any unit or byte-order defined. If you need to specify the
output dtype precisely, you may do so by either casting the inputs or
providing an output array using out=.

NumPy may choose to allow providing an exact output dtype here in the
future, which would be preceded by a FutureWarning.

(gh-18718)

Ufunc signature=... and dtype= generalization and casting

The behaviour for np.ufunc(1.0, 1.0, signature=...) or
np.ufunc(1.0, 1.0, dtype=...) can now yield different loops in 1.21
compared to 1.20 because of changes in promotion. When signature was
previously used, the casting check on inputs was relaxed, which could
lead to downcasting inputs unsafely especially if combined with
casting="unsafe".

Casting is now guaranteed to be safe. If a signature is only partially
provided, for example using signature=("float64", None, None), this
could lead to no loop being found (an error). In that case, it is
necessary to provide the complete signature to enforce casting the
inputs. If dtype="float64" is used or only outputs are set (e.g.
signature=(None, None, "float64") the is unchanged. We expect that
very few users are affected by this change.

Further, the meaning of dtype="float64" has been slightly modified and
now strictly enforces only the correct output (and not input) DTypes.
This means it is now always equivalent to:

signature=(None, None, "float64")

(If the ufunc has two inputs and one output). Since this could lead to
no loop being found in some cases, NumPy will normally also search for
the loop:

signature=("float64", "float64", "float64")

if the first search failed. In the future, this behaviour may be
customized to achieve the expected results for more complex ufuncs. (For
some universal functions such as np.ldexp inputs can have different
DTypes.)

(gh-18880)

Distutils forces strict floating point model on clang

NumPy distutils will now always add the -ffp-exception-behavior=strict
compiler flag when compiling with clang. Clang defaults to a non-strict
version, which allows the compiler to generate code that does not set
floating point warnings/errors correctly.

(gh-19049)

C API changes

Use of ufunc->type_resolver and "type tuple"

NumPy now normalizes the "type tuple" argument to the type resolver
functions before calling it. Note that in the use of this type resolver
is legacy behaviour and NumPy will not do so when possible. Calling
ufunc->type_resolver or PyUFunc_DefaultTypeResolver is strongly
discouraged and will now enforce a normalized type tuple if done. Note
that this does not affect providing a type resolver, which is expected
to keep working in most circumstances. If you have an unexpected
use-case for calling the type resolver, please inform the NumPy
developers so that a solution can be found.

(gh-18718)

New Features

Added a mypy plugin for handling platform-specific numpy.number precisions

A mypy plugin is now available for
automatically assigning the (platform-dependent) precisions of certain
numpy.number subclasses, including the likes of
numpy.int_, numpy.intp and
numpy.longlong. See the documentation on
scalar types <arrays.scalars.built-in>
for a comprehensive overview of the affected classes.

Note that while usage of the plugin is completely optional, without it
the precision of above-mentioned classes will be inferred as
typing.Any.

To enable the plugin, one must add it to their mypy [configuration file]
(https://mypy.readthedocs.io/en/stable/config_file.html):

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-17843)

Let the mypy plugin manage extended-precision numpy.number subclasses

The mypy plugin, introduced in
numpy/numpy#17843, has
been expanded: the plugin now removes annotations for platform-specific
extended-precision types that are not available to the platform in
question. For example, it will remove numpy.float128
when not available.

Without the plugin all extended-precision types will, as far as mypy
is concerned, be available on all platforms.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin
                                                                        cn

(gh-18322)

New min_digits argument for printing float values

A new min_digits argument has been added to the dragon4 float printing
functions numpy.format_float_positional and
numpy.format_float_scientific. This kwd guarantees
that at least the given number of digits will be printed when printing
in unique=True mode, even if the extra digits are unnecessary to
uniquely specify the value. It is the counterpart to the precision
argument which sets the maximum number of digits to be printed. When
unique=False in fixed precision mode, it has no effect and the precision
argument fixes the number of digits.

(gh-18629)

f2py now recognizes Fortran abstract interface blocks

numpy.f2py can now parse abstract interface blocks.

(gh-18695)

BLAS and LAPACK configuration via environment variables

Autodetection of installed BLAS and LAPACK libraries can be bypassed by
using the NPY_BLAS_LIBS and NPY_LAPACK_LIBS environment variables.
Instead, the link flags in these environment variables will be used
directly, and the language is assumed to be F77. This is especially
useful in automated builds where the BLAS and LAPACK that are installed
are known exactly. A use case is replacing the actual implementation at
runtime via stub library links.

If NPY_CBLAS_LIBS is set (optional in addition to NPY_BLAS_LIBS),
this will be used as well, by defining HAVE_CBLAS and appending the
environment variable content to the link flags.

(gh-18737)

A runtime-subcriptable alias has been added for ndarray

numpy.typing.NDArray has been added, a runtime-subscriptable alias for
np.ndarray[Any, np.dtype[~Scalar]]. The new type alias can be used for
annotating arrays with a given dtype and unspecified shape. ^1^

^1^ NumPy does not support the annotating of array shapes as of 1.21,
this is expected to change in the future though (see
646{.interpreted-text role="pep"}).

Examples

>>> import numpy as np
>>> import numpy.typing as npt

>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]

>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)

>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
...     return np.array(a)

(gh-18935)

Improvements

Arbitrary period option for numpy.unwrap

The size of the interval over which phases are unwrapped is no longer
restricted to 2 * pi. This is especially useful for unwrapping
degrees, but can also be used for other intervals.

>>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
>>> phase_deg
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
       -180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
       -180.])

>>> unwrap(phase_deg, period=360)
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
        180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
        540.])

(gh-16987)

np.unique now returns single NaN

When np.unique operated on an array with multiple NaN entries, its
return included a NaN for each entry that was NaN in the original
array. This is now improved such that the returned array contains just
one NaN as the last element.

Also for complex arrays all NaN values are considered equivalent (no
matter whether the NaN is in the real or imaginary part). As the
representant for the returned array the smallest one in the
lexicographical order is chosen - see np.sort for how the
lexicographical order is defined for complex arrays.

(gh-18070)

Generator.rayleigh and Generator.geometric performance improved

The performance of Rayleigh and geometric random variate generation in
Generator has improved. These are both transformation of exponential
random variables and the slow log-based inverse cdf transformation has
been replaced with the Ziggurat-based exponential variate generator.

This change breaks the stream of variates generated when variates from
either of these distributions are produced.

(gh-18666)

Placeholder annotations have been improved

All placeholder annotations, that were previously annotated as
typing.Any, have been improved. Where appropiate they have been
replaced with explicit function definitions, classes or other
miscellaneous objects.

(gh-18934)

Performance improvements

Improved performance in integer division of NumPy arrays

Integer division of NumPy arrays now uses
libdivide when the divisor is a constant. With
the usage of libdivide and other minor optimizations, there is a large
speedup. The // operator and np.floor_divide makes use of the new
changes.

(gh-17727)

Improve performance of np.save and np.load for small arrays

np.save is now a lot faster for small arrays.

np.load is also faster for small arrays, but only when serializing
with a version >= (3, 0).

Both are done by removing checks that are only relevant for Python 2,
while still maintaining compatibility with arrays which might have been
created by Python 2.

(gh-18657)

Changes

numpy.piecewise output class now matches the input class

When numpy.ndarray subclasses are used on input to
numpy.piecewise, they are passed on to the functions.
The output will now be of the same subclass as well.

(gh-18110)

Enable Accelerate Framework

With the release of macOS 11.3, several different issues that numpy was
encountering when using Accelerate Framework's implementation of BLAS
and LAPACK should be resolved. This change enables the Accelerate
Framework as an option on macOS. If additional issues are found, please
file a bug report against Accelerate using the developer feedback
assistant tool (https://developer.apple.com/bug-reporting/). We intend
to address issues promptly and plan to continue supporting and updating
our BLAS and LAPACK libraries.

(gh-18874)

Checksums

MD5

dbebcfa9ea1ee8e965e5c67dd445f442  numpy-1.21.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
682e6dc443cdf8bff9941bc8045ee176  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
8c4706bc4dbf63bb8d5befa7be5301ca  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
50702a8708d4b272a9a9c6d4be9c13d7  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
5ff414f878262c3d4b1f25677c08170e  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
e39a00070130d7db4a8c21bde7fe343c  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
4179696b3d46361c1dca956ede445d71  numpy-1.21.0rc2-cp37-cp37m-win32.whl
a71c9c8713300038fd85f3434c819623  numpy-1.21.0rc2-cp37-cp37m-win_amd64.whl
238168b5be91f15e00bfda8980268c1c  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_universal2.whl
21cd69e57f6ca956cfb18e5eac7f284b  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
db329a3092104d18265d3186b2024383  numpy-1.21.0rc2-cp38-cp38-macosx_11_0_arm64.whl
51d2aea5ba376ab0ba242deefc8d530d  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
72916834e36511fd0381a94e8971c105  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
e30845a0aa593380f1385c977b10971f  numpy-1.21.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ae21393c854629fde4c5cea46778f41d  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
441b4ac09e2d77f7c96571a728b040a3  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
f31bd687ec8fd13ecdb0db91763c6ebb  numpy-1.21.0rc2-cp38-cp38-win32.whl
163c0c4634d5d15b29791fead97571dd  numpy-1.21.0rc2-cp38-cp38-win_amd64.whl
fd79df4f0255b3b56a93085e5512e778  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_universal2.whl
35529757fbbf871dcaecc124e985af67  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
4138675d78b13511a0b11bc296bd83e6  numpy-1.21.0rc2-cp39-cp39-macosx_11_0_arm64.whl
62a72562ff240981bbcfeebc679bc4ee  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
73dd49f6e4d608017b7257c34f4f919e  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
6aa0da53da74868c5456f9a5a0781616  numpy-1.21.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
8a5342cd72277d89b441bc1125088b87  numpy-1.21.0rc2-cp39-cp39-win32.whl
59dbae57afdf57bf2ba9ec402e40366e  numpy-1.21.0rc2-cp39-cp39-win_amd64.whl
b2ab4d71140295df32992f9a34c61012  numpy-1.21.0rc2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
44a411dbb345847a89874447cc8fb2c0  numpy-1.21.0rc2.tar.gz
ffd8130fbb3046ad090fada62a724aac  numpy-1.21.0rc2.zip

SHA256

fd11aa1d58b7538076613722a2915d3c3f1c0cd24f674e3194be29729d744dba  numpy-1.21.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
29036b6d56ad35f0637ac84af43f9469b39916ed06aa96729767639e3023ef72  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
5b2752404f6ba22b99617c21dc6c2f15accf61642a5626d239649a96294d8ecb  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
82446d2defd917656c87158a02a7d7e7c03ce8bde9bb39ae5f5b369c5ef561d2  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
b66b3cdad12d6074ddc46148cefc35c48b0437515c5bf8ce2acd913f486bc257  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
74ce56338ff5de5d8b48314a1ec5ebbc2b1c0f9f9d6c00ce1815be0d3f9dcbb4  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
8bb0a19f185e8d4fa60bb036cdc9fb4f34c6486e1d30034f6cacb882efa5252a  numpy-1.21.0rc2-cp37-cp37m-win32.whl
a0179c7130aa03f9e60cea9a0b0535b2c2b49f486bae724433cf6ac2abac832f  numpy-1.21.0rc2-cp37-cp37m-win_amd64.whl
ce5b195cbcced7c97429ca0323e2e3a19a503fc9ce0e1fea6c5be55e71214ebf  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_universal2.whl
a59ce04c77711cab0334591650af628151aa515d11bde905198d4e898bb57315  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
4b8e4c37aea928f0d8359ab24b14382de450180e618972d3b9df50848d084db1  numpy-1.21.0rc2-cp38-cp38-macosx_11_0_arm64.whl
09932f5bf0abda5654eda225fd070915942f2c32d9bb6747bd45b66af7a0a9b1  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
cfb7b67500e6af81a793287ca41912590327051b58da9dc2c0ecb65d35db6ec9  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
fec6300b8237aa1c561a8a5fec81ba1bcdf00b622f660897369798a8d57163c4  numpy-1.21.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
a18d4368018f029ea73df53ef801234d2d354e95c32d7890b1102bd2da9857ba  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
afebef861665eaa2e491894f2269d1941fbfbb8e5acf565a785107dcfc07613d  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
7d98ade9199b15aa8f589b2263d6028364aecd7a9caf426e65ffc1ba921624a5  numpy-1.21.0rc2-cp38-cp38-win32.whl
3c90b0bb77615bda5e007cfa4c53eb6097ecc82e247726e0eb138fcda769b45d  numpy-1.21.0rc2-cp38-cp38-win_amd64.whl
435090a12dca2232cdbd58740afd5c9ede830037e1f6af60344e3afd49554fc8  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_universal2.whl
bee549287cf2fcbf8f8e11b024e62f1a22af296cb1b015aa346d58a01cbfb603  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
5d4c1b43c84cfe1923dbaed4ef18261a9f7b420983dc209af117c28f32637973  numpy-1.21.0rc2-cp39-cp39-macosx_11_0_arm64.whl
93d0cb1b07511d1b108346975cd34cc1c32b7061fbb574ef4ce8fc8139cce417  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
53e7147d04c75dcf05c3bb38357329d64d4908f403560a1fcb64f7972599c638  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
32f683dd175c364b8904bf26ce030a4ff7134aeff0046e3511cbaf855f65583c  numpy-1.21.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
f7a0ed76e49c4ab6c53aa43358aa1d943ea5f61cc71844eca1cad8f00794589e  numpy-1.21.0rc2-cp39-cp39-win32.whl
e2d6388fe28784301fb8293a14d05a5329a9747fa8e451cc189e5f2ee1f422dd  numpy-1.21.0rc2-cp39-cp39-win_amd64.whl
5a711fbc9bbdb939d082bb856f9812eb3f98a82584ad73eaa924bed6b0695cab  numpy-1.21.0rc2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
e708211e58a32e11ee3b810aa78751776b3723c60edc8dcbadfdd00dab3dc32b  numpy-1.21.0rc2.tar.gz
cb725aae7c31327e642b876e3195b7fe147bb8d14d85f749ac13ab87d9ab5fab  numpy-1.21.0rc2.zip
numpy -

Published by charris over 3 years ago

NumPy 1.21.0 Release Notes

The NumPy 1.21.0 release highlights are

  • continued SIMD work covering more functions and platforms,
  • initial work on the new dtype infrastructure and casting,
  • improved documentation,
  • improved annotations,
  • the new PCG64DXSM bitgenerator for random numbers.

In addition there are the usual large number of bug fixes and other
improvements.

The Python versions supported for this release are 3.7-3.9. Official
support for Python 3.10 will be added when it is released.

New functions

Add PCG64DXSM BitGenerator

Uses of the PCG64 BitGenerator in a massively-parallel context have
been shown to have statistical weaknesses that were not apparent at the
first release in numpy 1.17. Most users will never observe this weakness
and are safe to continue to use PCG64. We have introduced a new
PCG64DXSM BitGenerator that will eventually become the new default
BitGenerator implementation used by default_rng in future releases.
PCG64DXSM solves the statistical weakness while preserving the
performance and the features of PCG64.

See upgrading-pcg64{.interpreted-text role="ref"} for more details.

(gh-18906)

Expired deprecations

  • The shape argument of numpy.unravel_index cannot be
    passed as dims keyword argument anymore. (Was deprecated in NumPy
    1.16.)

    (gh-17900)

  • The function PyUFunc_GenericFunction has been disabled. It was
    deprecated in NumPy 1.19. Users should call the ufunc directly using
    the Python API.

    (gh-18697)

  • The function PyUFunc_SetUsesArraysAsData has been disabled. It was
    deprecated in NumPy 1.19.

    (gh-18697)

  • The class PolyBase has been removed (deprecated in numpy 1.9.0).
    Please use the abstract ABCPolyBase class instead.

    (gh-18963)

  • The unused PolyError and PolyDomainError exceptions are removed.

    (gh-18963)

Deprecations

Inexact matches for numpy.convolve and numpy.correlate are deprecated

numpy.convolve and numpy.correlate now
emit a warning when there are case insensitive and/or inexact matches
found for mode argument in the functions. Pass full "same",
"valid", "full" strings instead of "s", "v", "f" for the
mode argument.

(gh-17492)

np.typeDict has been formally deprecated

np.typeDict is a deprecated alias for np.sctypeDict and has been so
for over 14 years (6689502).
A deprecation warning will now be issued whenever getting np.typeDict.

(gh-17586)

Exceptions will be raised during array-like creation

When an object raised an exception during access of the special
attributes __array__ or __array_interface__, this exception was
usually ignored. A warning is now given when the exception is anything
but AttributeError. To silence the warning, the type raising the
exception has to be adapted to raise an AttributeError.

(gh-19001)

Four ndarray.ctypes methods have been deprecated

Four methods of the ndarray.ctypes object have been
deprecated, as they are (undocumentated) implementation artifacts of
their respective properties.

The methods in question are:

  • _ctypes.get_data (use _ctypes.data instead)
  • _ctypes.get_shape (use _ctypes.shape instead)
  • _ctypes.get_strides (use _ctypes.strides instead)
  • _ctypes.get_as_parameter (use _ctypes._as_parameter_ instead)

(gh-19031)

Future Changes

Promotion of strings with numbers and bools will be deprecated

Any promotion of numbers and strings is deprecated and will give a
FutureWarning the main affected functionalities are:

  • numpy.promote_types and
    numpy.result_type which will raise an error in this
    case in the future.
  • numpy.concatenate will raise an error when
    concatenating a string and numeric array. You can use dtype="S" to
    explicitly request a string result.
  • numpy.array and related functions will start
    returning object arrays because these functions use object as a
    fallback when no common dtype can be found. However, it may happen
    that future releases of NumPy will generally error in these cases.

This will mainly affect code such as:

np.asarray(['string', 0])

and:

np.concatenate((['string'], [0]))

in both cases adding dtype="U" or dtype="S" will give the previous
(string) result, while dtype=object will ensure an array with object
dtype is returned.

Comparisons, universal functions, and casting are not affected by this.

(gh-18116)

Compatibility notes

Error type changes in universal functions

The universal functions may now raise different errors on invalid input
in some cases. The main changes should be that a RuntimeError was
replaced with a more fitting TypeError. When multiple errors were
present in the same call, NumPy may now raise a different one.

(gh-15271)

__array_ufunc__ argument validation

NumPy will now partially validate arguments before calling
__array_ufunc__. Previously, it was possible to pass on invalid
arguments (such as a non-existing keyword argument) when dispatch was
known to occur.

(gh-15271)

__array_ufunc__ and additional positional arguments

Previously, all positionally passed arguments were checked for
__array_ufunc__ support. In the case of reduce, accumulate, and
reduceat all arguments may be passed by position. This means that when
they were passed by position, they could previously have been asked to
handle the ufunc call via __array_ufunc__. Since this depended on the
way the arguments were passed (by position or by keyword), NumPy will
now only dispatch on the input and output array. For example, NumPy will
never dispatch on the where array in a reduction such as
np.add.reduce.

(gh-15271)

Validate input values in Generator.uniform

Checked that high - low >= 0 in np.random.Generator.uniform. Raises
ValueError if low > high. Previously out-of-order inputs were
accepted and silently swapped, so that if low > high, the value
generated was high + (low - high) * random().

(gh-17921)

/usr/include removed from default include paths

The default include paths when building a package with numpy.distutils
no longer include /usr/include. This path is normally added by the
compiler, and hardcoding it can be problematic. In case this causes a
problem, please open an issue. A workaround is documented in PR 18658.

(gh-18658)

Changes to comparisons with dtype=...

When the dtype= (or signature) arguments to comparison ufuncs
(equal, less, etc.) is used, this will denote the desired output
dtype in the future. This means that:

np.equal(2, 3, dtype=object)

will give a FutureWarning that it will return an object array in the
future, which currently happens for:

np.equal(None, None, dtype=object)

due to the fact that np.array(None) is already an object array. (This
also happens for some other dtypes.)

Since comparisons normally only return boolean arrays, providing any
other dtype will always raise an error in the future and give a
DeprecationWarning now.

(gh-18718)

Changes to dtype and signature arguments in ufuncs

The universal function arguments dtype and signature which are also
valid for reduction such as np.add.reduce (which is the implementation
for np.sum) will now issue a warning when the dtype provided is not
a "basic" dtype.

NumPy almost always ignored metadata, byteorder or time units on these
inputs. NumPy will now always ignore it and raise an error if byteorder
or time unit changed. The following are the most important examples of
changes which will give the error. In some cases previously the
information stored was not ignored, in all of these an error is now
raised:

# Previously ignored the byte-order (affect if non-native)
np.add(3, 5, dtype=">i32")

# The biggest impact is for timedelta or datetimes:
arr = np.arange(10, dtype="m8[s]")
# The examples always ignored the time unit "ns":
np.add(arr, arr, dtype="m8[ns]")
np.maximum.reduce(arr, dtype="m8[ns]")

# The following previously did use "ns" (as opposed to `arr.dtype`)
np.add(3, 5, dtype="m8[ns]")  # Now return generic time units
np.maximum(arr, arr, dtype="m8[ns]")  # Now returns "s" (from `arr`)

The same applies for functions like np.sum which use these internally.
This change is necessary to achieve consistent handling within NumPy.

If you run into these, in most cases pass for example
dtype=np.timedelta64 which clearly denotes a general timedelta64
without any unit or byte-order defined. If you need to specify the
output dtype precisely, you may do so by either casting the inputs or
providing an output array using out=.

NumPy may choose to allow providing an exact output dtype here in the
future, which would be preceded by a FutureWarning.

(gh-18718)

Ufunc signature=... and dtype= generalization and casting

The behaviour for np.ufunc(1.0, 1.0, signature=...) or
np.ufunc(1.0, 1.0, dtype=...) can now yield different loops in 1.21
compared to 1.20 because of changes in promotion. When signature was
previously used, the casting check on inputs was relaxed, which could
lead to downcasting inputs unsafely especially if combined with
casting="unsafe".

Casting is now guaranteed to be safe. If a signature is only partially
provided, for example using signature=("float64", None, None), this
could lead to no loop being found (an error). In that case, it is
necessary to provide the complete signature to enforce casting the
inputs. If dtype="float64" is used or only outputs are set (e.g.
signature=(None, None, "float64") the is unchanged. We expect that
very few users are affected by this change.

Further, the meaning of dtype="float64" has been slightly modified and
now strictly enforces only the correct output (and not input) DTypes.
This means it is now always equivalent to:

signature=(None, None, "float64")

(If the ufunc has two inputs and one output). Since this could lead to
no loop being found in some cases, NumPy will normally also search for
the loop:

signature=("float64", "float64", "float64")

if the first search failed. In the future, this behaviour may be
customized to achieve the expected results for more complex ufuncs. (For
some universal functions such as np.ldexp inputs can have different
DTypes.)

(gh-18880)

Distutils forces strict floating point model on clang

NumPy distutils will now always add the -ffp-exception-behavior=strict
compiler flag when compiling with clang. Clang defaults to a non-strict
version, which allows the compiler to generate code that does not set
floating point warnings/errors correctly.

(gh-19049)

C API changes

Use of ufunc->type_resolver and "type tuple"

NumPy now normalizes the "type tuple" argument to the type resolver
functions before calling it. Note that in the use of this type resolver
is legacy behaviour and NumPy will not do so when possible. Calling
ufunc->type_resolver or PyUFunc_DefaultTypeResolver is strongly
discouraged and will now enforce a normalized type tuple if done. Note
that this does not affect providing a type resolver, which is expected
to keep working in most circumstances. If you have an unexpected
use-case for calling the type resolver, please inform the NumPy
developers so that a solution can be found.

(gh-18718)

New Features

Added a mypy plugin for handling platform-specific numpy.number precisions

A mypy plugin is now available for
automatically assigning the (platform-dependent) precisions of certain
numpy.number subclasses, including the likes of
numpy.int_, numpy.intp and
numpy.longlong. See the documentation on
scalar types <arrays.scalars.built-in>{.interpreted-text role="ref"}
for a comprehensive overview of the affected classes.

Note that while usage of the plugin is completely optional, without it
the precision of above-mentioned classes will be inferred as
typing.Any.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-17843)

Let the mypy plugin manage extended-precision numpy.number subclasses

The mypy plugin, introduced in
numpy/numpy#17843, has
been expanded: the plugin now removes annotations for platform-specific
extended-precision types that are not available to the platform in
question. For example, it will remove numpy.float128
when not available.

Without the plugin all extended-precision types will, as far as mypy
is concerned, be available on all platforms.

To enable the plugin, one must add it to their mypy configuration
file
:

[mypy]
plugins = numpy.typing.mypy_plugin

(gh-18322)

New min_digits argument for printing float values

A new min_digits argument has been added to the dragon4 float printing
functions numpy.format_float_positional and
numpy.format_float_scientific . This kwd guarantees
that at least the given number of digits will be printed when printing
in unique=True mode, even if the extra digits are unnecessary to
uniquely specify the value. It is the counterpart to the precision
argument which sets the maximum number of digits to be printed. When
unique=False in fixed precision mode, it has no effect and the precision
argument fixes the number of digits.

(gh-18629)

f2py now recognizes Fortran abstract interface blocks

numpy.f2py can now parse abstract interface blocks.

(gh-18695)

BLAS and LAPACK configuration via environment variables

Autodetection of installed BLAS and LAPACK libraries can be bypassed by
using the NPY_BLAS_LIBS and NPY_LAPACK_LIBS environment variables.
Instead, the link flags in these environment variables will be used
directly, and the language is assumed to be F77. This is especially
useful in automated builds where the BLAS and LAPACK that are installed
are known exactly. A use case is replacing the actual implementation at
runtime via stub library links.

If NPY_CBLAS_LIBS is set (optional in addition to NPY_BLAS_LIBS),
this will be used as well, by defining HAVE_CBLAS and appending the
environment variable content to the link flags.

(gh-18737)

A runtime-subcriptable alias has been added for ndarray

numpy.typing.NDArray has been added, a runtime-subscriptable alias for
np.ndarray[Any, np.dtype[~Scalar]]. The new type alias can be used for
annotating arrays with a given dtype and unspecified shape. ^1^

^1^ NumPy does not support the annotating of array shapes as of 1.21,
this is expected to change in the future though (see
646{.interpreted-text role="pep"}).

Examples

>>> import numpy as np
>>> import numpy.typing as npt

>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]

>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)

>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
...     return np.array(a)

(gh-18935)

Improvements

Arbitrary period option for numpy.unwrap

The size of the interval over which phases are unwrapped is no longer
restricted to 2 * pi. This is especially useful for unwrapping
degrees, but can also be used for other intervals.

>>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
>>> phase_deg
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
       -180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
       -180.])

>>> unwrap(phase_deg, period=360)
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
        180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
        540.])

(gh-16987)

np.unique now returns single NaN

When np.unique operated on an array with multiple NaN entries, its
return included a NaN for each entry that was NaN in the original
array. This is now improved such that the returned array contains just
one NaN as the last element.

Also for complex arrays all NaN values are considered equivalent (no
matter whether the NaN is in the real or imaginary part). As the
representant for the returned array the smallest one in the
lexicographical order is chosen - see np.sort for how the
lexicographical order is defined for complex arrays.

(gh-18070)

Generator.rayleigh and Generator.geometric performance improved

The performance of Rayleigh and geometric random variate generation in
Generator has improved. These are both transformation of exponential
random variables and the slow log-based inverse cdf transformation has
been replaced with the Ziggurat-based exponential variate generator.

This change breaks the stream of variates generated when variates from
either of these distributions are produced.

(gh-18666)

Placeholder annotations have been improved

All placeholder annotations, that were previously annotated as
typing.Any, have been improved. Where appropiate they have been
replaced with explicit function definitions, classes or other
miscellaneous objects.

(gh-18934)

Performance improvements

Improved performance in integer division of NumPy arrays

Integer division of NumPy arrays now uses
libdivide when the divisor is a constant. With
the usage of libdivide and other minor optimizations, there is a large
speedup. The // operator and np.floor_divide makes use of the new
changes.

(gh-17727)

Improve performance of np.save and np.load for small arrays

np.save is now a lot faster for small arrays.

np.load is also faster for small arrays, but only when serializing
with a version >= (3, 0).

Both are done by removing checks that are only relevant for Python 2,
while still maintaining compatibility with arrays which might have been
created by Python 2.

(gh-18657)

Changes

numpy.piecewise output class now matches the input class

When numpy.ndarray subclasses are used on input to
numpy.piecewise, they are passed on to the functions.
The output will now be of the same subclass as well.

(gh-18110)

Enable Accelerate Framework

With the release of macOS 11.3, several different issues that numpy was
encountering when using Accelerate Framework's implementation of BLAS
and LAPACK should be resolved. This change enables the Accelerate
Framework as an option on macOS. If additional issues are found, please
file a bug report against Accelerate using the developer feedback
assistant tool (https://developer.apple.com/bug-reporting/). We intend
to address issues promptly and plan to continue supporting and updating
our BLAS and LAPACK libraries.

(gh-18874)

Checksums

MD5

9ccf85701eb21a5ea2fb477136ab4247  numpy-1.21.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
5efabc4661fe181dc6e1c65ec635f469  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
15dba3c0e6a1018d964101dd0da643f0  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
2d950f3681f6ca81446e1ef1ce965000  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
7f6754af0b06c1847a92430fb34f49ca  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
26a2ed6c94f1e679e2356c2e34d5bca0  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
f83946bc549f52967ad167770ce7f028  numpy-1.21.0rc1-cp37-cp37m-win32.whl
745946f9036969a4574f5dfcdbf73d00  numpy-1.21.0rc1-cp37-cp37m-win_amd64.whl
9aec39edd809b0ce0f024511ad670892  numpy-1.21.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
11cce9128d4c41675383ff5ffebc5f80  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
b9baa8e1cc031b8f63122e056f5a9d01  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
ed671703310ffc4a446c9a7b2227045c  numpy-1.21.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
77dfe86f5af5702c6115cec33211a5d0  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
84971cae75e47951f451b889958220f7  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
566c652f9cdb10f55777f030ce857824  numpy-1.21.0rc1-cp38-cp38-win32.whl
c09a49c8aef8a87267322343a1abaaf2  numpy-1.21.0rc1-cp38-cp38-win_amd64.whl
7755038d0c4a996c912c967b34a2aaff  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_universal2.whl
a51746adf928b66b7ce6f51afe87fa5f  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
3da1f90027f433e13cef63d12bdc6142  numpy-1.21.0rc1-cp39-cp39-macosx_11_0_arm64.whl
eff3767616a49ca7bec3f44476f07be8  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
c09d61a8afbc1ae1ffa5a4ba0f53616b  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
7861468db5b918ee7188871daad34f1a  numpy-1.21.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
9d416859d0fe38b80d63ea1e368133d9  numpy-1.21.0rc1-cp39-cp39-win32.whl
d92e6574a0656f170d76f377f41f8dd3  numpy-1.21.0rc1-cp39-cp39-win_amd64.whl
8d8aa5cab5d2e6d94a4a09c33461776e  numpy-1.21.0rc1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
32a9675f747267c5e0bbe87a79ecc31b  numpy-1.21.0rc1.tar.gz
2369c08c213ba96377b33fe90f53c509  numpy-1.21.0rc1.zip

SHA256

19e076e4d9b66fd63477e907ed2a4c6662bbcd5a74b2cf50a9b0753afb4ee167  numpy-1.21.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
8b92d27414779f568484c4a0aeddbff8e1fa9d9403cff122161fa25bc94e7f44  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
a1c3737f659085eeaab83e016569368157d8d46d6a3be317c864dadd3c28fa42  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
35180d82f457f0857963a486c16bd472582f217827c839dcb3a3de298b532f11  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
438129e0d1dd03d235ae25c45b5621888d699935cf5b813d08a0bb2e7221c9d4  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
63b3d66f5610c61d3d1b47687b99584fdf7734192344814d80f2670e0c7b05ef  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
4c6395cc3eefdd1c9ede1c84ad8e728edfc97ea506b04b9600d4cb61c7b80cb4  numpy-1.21.0rc1-cp37-cp37m-win32.whl
9abfe8ef4f8898d0448de735a3270de466553b61de8e6ddc31fc8770003fdfa4  numpy-1.21.0rc1-cp37-cp37m-win_amd64.whl
7ada705e3e9364f874c41fc370c23247f4c1466888dfd61ac5ec9277524928c2  numpy-1.21.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
6ed13704d67934d458abeaacd96079bb8ae5f0ea000765777449e94288590097  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
305aff30d8976eccf14751a1095dac0e60e0c071f1fb82e6c53948fc5b6b346c  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
a3a480ac4077c868124427456c6a64dcb7da12817bd3e770006980a4fd0d2526  numpy-1.21.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
80929da75a678433dcc8c79db94eb373408778d17fe9b49c4521501a5923a3e2  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
234fc98750ada00204ebf3acd94baea213c6f9f0ff6b097d06952f734f67e58a  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
da0797286c299c426e5b6cf03ca9e1dab0dace161b64d7a1879c4d15eb12ceba  numpy-1.21.0rc1-cp38-cp38-win32.whl
17f3ac57e19740f1c064c284ad361148be245fabbd6390bec3ffa814fb287fd6  numpy-1.21.0rc1-cp38-cp38-win_amd64.whl
57410c33aef7b3fd4ef2e5f09f1c084a21021055c74034748b8d2957a72dad01  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_universal2.whl
4796c196faa5f5418ce9a8ee0e993c925755e505778e32442263422c4fe88013  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
97faf00577c74a4f4b6304c1b7f6223fb0825d1a7cfaad5601cbeadd8282cd70  numpy-1.21.0rc1-cp39-cp39-macosx_11_0_arm64.whl
56d67935694d9270e0a9bcfd6b9169f81ef2c2e5e154acd57ac7afe2d48d7b29  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
b58c8c1ea4b80a5cbc756a11e446eec16088ebd9e080e71a64c458f6c07cb3c7  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
723fff54844d9c1e01703ed2bc177f892fd89530b7671e8191a639d799cd75b7  numpy-1.21.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
dcc194082d94c45fe8a005861cdce6ec33b51c1dccf2a7e6044b33038b82f579  numpy-1.21.0rc1-cp39-cp39-win32.whl
ff442e4fe6e66019b2070352e0cd6e7dde994ff1267d45343b587ed621e4ec47  numpy-1.21.0rc1-cp39-cp39-win_amd64.whl
068cfc78963ce8b9dd2dc7ad1f2d5ebebc47e10103ea0166074e6bd31e78aeb8  numpy-1.21.0rc1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
3baf619f71612da80628e63def8d901832f76a9d396fde2613ea3d73277bc08d  numpy-1.21.0rc1.tar.gz
f5e7cd7068df4aa803be68edc7c6fc5e3ed934d53a7ab1f21539fb5925e0172e  numpy-1.21.0rc1.zip
numpy -

Published by charris over 3 years ago

NumPy 1.20.3 Release Notes

NumPy 1.20.3 is a bugfix release containing several fixes merged to the
main branch after the NumPy 1.20.2 release.

Contributors

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

  • Anne Archibald
  • Bas van Beek
  • Charles Harris
  • Dong Keun Oh +
  • Kamil Choudhury +
  • Sayed Adel
  • Sebastian Berg

Pull requests merged

A total of 15 pull requests were merged for this release.

  • #18763: BUG: Correct datetime64 missing type overload for datetime.date...
  • #18764: MAINT: Remove __all__ in favor of explicit re-exports
  • #18768: BLD: Strip extra newline when dumping gfortran version on MacOS
  • #18769: BUG: fix segfault in object/longdouble operations
  • #18794: MAINT: Use towncrier build explicitly
  • #18887: MAINT: Relax certain integer-type constraints
  • #18915: MAINT: Remove unsafe unions and ABCs from return-annotations
  • #18921: MAINT: Allow more recursion depth for scalar tests.
  • #18922: BUG: Initialize the full nditer buffer in case of error
  • #18923: BLD: remove unnecessary flag -faltivec on macOS
  • #18924: MAINT, CI: treats _SIMD module build warnings as errors through...
  • #18925: BUG: for MINGW, threads.h existence test requires GLIBC > 2.12
  • #18941: BUG: Make changelog recognize gh- as a PR number prefix.
  • #18948: REL, DOC: Prepare for the NumPy 1.20.3 release.
  • #18953: BUG: Fix failing mypy test in 1.20.x.

Checksums

MD5

702d0185042f1ff9a5d7e72a29f4e1c0  numpy-1.20.3-cp37-cp37m-macosx_10_9_x86_64.whl
3d0284b39b20c243b74f6690ad5ae27f  numpy-1.20.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
d1b42dd67dc228088cf822eaab86d424  numpy-1.20.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
126b1a5d46cc7d9b9b426f56d075a1e0  numpy-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
5b0445346f08b610025dbd2064d4b482  numpy-1.20.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
02bd4a2c764882e8af353c16344cb633  numpy-1.20.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
0f6a36724d5477c8fca6c34e73683db6  numpy-1.20.3-cp37-cp37m-win32.whl
c7d3ae93743d6c0ea2c9dfcad1d42cb4  numpy-1.20.3-cp37-cp37m-win_amd64.whl
445da50ae14b3318170ccf996baca72c  numpy-1.20.3-cp38-cp38-macosx_10_9_x86_64.whl
c651fdb4829703e164bc78613c1a90a8  numpy-1.20.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
c9411ef729b8ebe9ed3b8e9dee3da4ac  numpy-1.20.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
ff69ad241598607fdfea24155625a6e3  numpy-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
9fd8d44d8a5f19e434e9dfb7738d954f  numpy-1.20.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
d144fdfe141442a7f362d498bc9a40c2  numpy-1.20.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
e7ffa27f1c75cf11529d90967fa15bbc  numpy-1.20.3-cp38-cp38-win32.whl
58c12a54d1b5bc14d36ed2b0d8617fef  numpy-1.20.3-cp38-cp38-win_amd64.whl
18efbadcb513054c765f826fc3bb1645  numpy-1.20.3-cp39-cp39-macosx_10_9_x86_64.whl
319300952bd42455cb2ad98188c74b5f  numpy-1.20.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
1d1451f9a5a2eeef666fc512a101a6ca  numpy-1.20.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
cdef3fb002bb5e3036f056ea0528c804  numpy-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
85e575735877094f3a76106e9d2a9cac  numpy-1.20.3-cp39-cp39-win32.whl
59f1dba95dedc7a1bebc58ee7e7a945a  numpy-1.20.3-cp39-cp39-win_amd64.whl
6abc979843929b41b099e4e6c0253063  numpy-1.20.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
802ddf90c7e226ba56ed0ea244f8b53d  numpy-1.20.3.tar.gz
949d9114af9accc25ede1daa359c4227  numpy-1.20.3.zip

SHA256

70eb5808127284c4e5c9e836208e09d685a7978b6a216db85960b1a112eeace8  numpy-1.20.3-cp37-cp37m-macosx_10_9_x86_64.whl
6ca2b85a5997dabc38301a22ee43c82adcb53ff660b89ee88dded6b33687e1d8  numpy-1.20.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
c5bf0e132acf7557fc9bb8ded8b53bbbbea8892f3c9a1738205878ca9434206a  numpy-1.20.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
db250fd3e90117e0312b611574cd1b3f78bec046783195075cbd7ba9c3d73f16  numpy-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
637d827248f447e63585ca3f4a7d2dfaa882e094df6cfa177cc9cf9cd6cdf6d2  numpy-1.20.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
8b7bb4b9280da3b2856cb1fc425932f46fba609819ee1c62256f61799e6a51d2  numpy-1.20.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
67d44acb72c31a97a3d5d33d103ab06d8ac20770e1c5ad81bdb3f0c086a56cf6  numpy-1.20.3-cp37-cp37m-win32.whl
43909c8bb289c382170e0282158a38cf306a8ad2ff6dfadc447e90f9961bef43  numpy-1.20.3-cp37-cp37m-win_amd64.whl
f1452578d0516283c87608a5a5548b0cdde15b99650efdfd85182102ef7a7c17  numpy-1.20.3-cp38-cp38-macosx_10_9_x86_64.whl
6e51534e78d14b4a009a062641f465cfaba4fdcb046c3ac0b1f61dd97c861b1b  numpy-1.20.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
e515c9a93aebe27166ec9593411c58494fa98e5fcc219e47260d9ab8a1cc7f9f  numpy-1.20.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
c1c09247ccea742525bdb5f4b5ceeacb34f95731647fe55774aa36557dbb5fa4  numpy-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
66fbc6fed94a13b9801fb70b96ff30605ab0a123e775a5e7a26938b717c5d71a  numpy-1.20.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
ea9cff01e75a956dbee133fa8e5b68f2f92175233de2f88de3a682dd94deda65  numpy-1.20.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
f39a995e47cb8649673cfa0579fbdd1cdd33ea497d1728a6cb194d6252268e48  numpy-1.20.3-cp38-cp38-win32.whl
1676b0a292dd3c99e49305a16d7a9f42a4ab60ec522eac0d3dd20cdf362ac010  numpy-1.20.3-cp38-cp38-win_amd64.whl
830b044f4e64a76ba71448fce6e604c0fc47a0e54d8f6467be23749ac2cbd2fb  numpy-1.20.3-cp39-cp39-macosx_10_9_x86_64.whl
55b745fca0a5ab738647d0e4db099bd0a23279c32b31a783ad2ccea729e632df  numpy-1.20.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
5d050e1e4bc9ddb8656d7b4f414557720ddcca23a5b88dd7cff65e847864c400  numpy-1.20.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
a9c65473ebc342715cb2d7926ff1e202c26376c0dcaaee85a1fd4b8d8c1d3b2f  numpy-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
16f221035e8bd19b9dc9a57159e38d2dd060b48e93e1d843c49cb370b0f415fd  numpy-1.20.3-cp39-cp39-win32.whl
6690080810f77485667bfbff4f69d717c3be25e5b11bb2073e76bb3f578d99b4  numpy-1.20.3-cp39-cp39-win_amd64.whl
4e465afc3b96dbc80cf4a5273e5e2b1e3451286361b4af70ce1adb2984d392f9  numpy-1.20.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
b7340f0628ce1823c151e3d2a2a8cba2a3ff1357fba4475a24b1816e75c21f90  numpy-1.20.3.tar.gz
e55185e51b18d788e49fe8305fd73ef4470596b33fc2c1ceb304566b99c71a69  numpy-1.20.3.zip
numpy -

Published by charris over 3 years ago

NumPy 1.20.2 Release Notes

NumPy 1,20.2 is a bugfix release containing several fixes merged to the
main branch after the NumPy 1.20.1 release.

Contributors

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

  • Allan Haldane
  • Bas van Beek
  • Charles Harris
  • Christoph Gohlke
  • Mateusz Sokół +
  • Michael Lamparski
  • Sebastian Berg

Pull requests merged

A total of 20 pull requests were merged for this release.

  • #18382: MAINT: Update f2py from master.
  • #18459: BUG: diagflat could overflow on windows or 32-bit platforms
  • #18460: BUG: Fix refcount leak in f2py complex_double_from_pyobj.
  • #18461: BUG: Fix tiny memory leaks when like= overrides are used
  • #18462: BUG: Remove temporary change of descr/flags in VOID functions
  • #18469: BUG: Segfault in nditer buffer dealloc for Object arrays
  • #18485: BUG: Remove suspicious type casting
  • #18486: BUG: remove nonsensical comparison of pointer < 0
  • #18487: BUG: verify pointer against NULL before using it
  • #18488: BUG: check if PyArray_malloc succeeded
  • #18546: BUG: incorrect error fallthrough in nditer
  • #18559: CI: Backport CI fixes from main.
  • #18599: MAINT: Add annotations for __getitem__, __mul__ and...
  • #18611: BUG: NameError in numpy.distutils.fcompiler.compaq
  • #18612: BUG: Fixed where keyword for np.mean & np.var methods
  • #18617: CI: Update apt package list before Python install
  • #18636: MAINT: Ensure that re-exported sub-modules are properly annotated
  • #18638: BUG: Fix ma coercion list-of-ma-arrays if they do not cast to...
  • #18661: BUG: Fix small valgrind-found issues
  • #18671: BUG: Fix small issues found with pytest-leaks

Checksums

MD5

a95718df123e0726a7dac5043050b251  numpy-1.20.2-cp37-cp37m-macosx_10_9_x86_64.whl
4cacfe903c60827c0e44d0bed7e3a760  numpy-1.20.2-cp37-cp37m-manylinux1_i686.whl
2879728d4f815f07c7d133347deefe45  numpy-1.20.2-cp37-cp37m-manylinux1_x86_64.whl
97546a3cf4ddcc9fcc7eb41b9558f1de  numpy-1.20.2-cp37-cp37m-manylinux2010_i686.whl
65ffbc38abe1c1b92eb3bebf3484f679  numpy-1.20.2-cp37-cp37m-manylinux2010_x86_64.whl
5746efbd42db03518a51adbacbc70fa7  numpy-1.20.2-cp37-cp37m-manylinux2014_aarch64.whl
e9b8e30a5c62f003835b374dbc1c9031  numpy-1.20.2-cp37-cp37m-win32.whl
b2d0fa9383776ab68a1bbefc84331fc1  numpy-1.20.2-cp37-cp37m-win_amd64.whl
321aa118fbd40fe53a7c82557f3f2772  numpy-1.20.2-cp38-cp38-macosx_10_9_x86_64.whl
518013677b05371bbe7e1d6fa4ef61aa  numpy-1.20.2-cp38-cp38-manylinux1_i686.whl
58c61ea025646c391788f7bc7f681fa5  numpy-1.20.2-cp38-cp38-manylinux1_x86_64.whl
e8ce1857f017bffeed46b003a0385b11  numpy-1.20.2-cp38-cp38-manylinux2010_i686.whl
8ed52b7194b0953d0b04b88fbabea1ac  numpy-1.20.2-cp38-cp38-manylinux2010_x86_64.whl
0a9202dfd47fb02c8eab9f71f084633c  numpy-1.20.2-cp38-cp38-manylinux2014_aarch64.whl
8c70e309be1ae43d2938895b56ffbdb7  numpy-1.20.2-cp38-cp38-win32.whl
8aaa91a51b79556643ad93cb1d55b7d3  numpy-1.20.2-cp38-cp38-win_amd64.whl
b1b03999df657ccd4e65ff6abcf7e042  numpy-1.20.2-cp39-cp39-macosx_10_9_x86_64.whl
139fef5109539031e570aee9aa3090bf  numpy-1.20.2-cp39-cp39-manylinux2010_i686.whl
2c9463187e6a1a0245ed4a2db8e8e656  numpy-1.20.2-cp39-cp39-manylinux2010_x86_64.whl
b6cb08e8f56accedc4fdc29720ffb380  numpy-1.20.2-cp39-cp39-manylinux2014_aarch64.whl
a3024059b52e7688d3c98b82e2f2688e  numpy-1.20.2-cp39-cp39-win32.whl
abcd17ffd3b29014ff15e93a74c2c3d6  numpy-1.20.2-cp39-cp39-win_amd64.whl
67704047e60c2b280f7e9f42400cca91  numpy-1.20.2-pp37-pypy37_pp73-manylinux2010_x86_64.whl
6fe93791438f9c1f69c9352680151002  numpy-1.20.2.tar.gz
5e1b381630af4d18db0fedd56b6d8da2  numpy-1.20.2.zip

SHA256

e9459f40244bb02b2f14f6af0cd0732791d72232bbb0dc4bab57ef88e75f6935  numpy-1.20.2-cp37-cp37m-macosx_10_9_x86_64.whl
a8e6859913ec8eeef3dbe9aed3bf475347642d1cdd6217c30f28dee8903528e6  numpy-1.20.2-cp37-cp37m-manylinux1_i686.whl
9cab23439eb1ebfed1aaec9cd42b7dc50fc96d5cd3147da348d9161f0501ada5  numpy-1.20.2-cp37-cp37m-manylinux1_x86_64.whl
9c0fab855ae790ca74b27e55240fe4f2a36a364a3f1ebcfd1fb5ac4088f1cec3  numpy-1.20.2-cp37-cp37m-manylinux2010_i686.whl
61d5b4cf73622e4d0c6b83408a16631b670fc045afd6540679aa35591a17fe6d  numpy-1.20.2-cp37-cp37m-manylinux2010_x86_64.whl
d15007f857d6995db15195217afdbddfcd203dfaa0ba6878a2f580eaf810ecd6  numpy-1.20.2-cp37-cp37m-manylinux2014_aarch64.whl
d76061ae5cab49b83a8cf3feacefc2053fac672728802ac137dd8c4123397677  numpy-1.20.2-cp37-cp37m-win32.whl
bad70051de2c50b1a6259a6df1daaafe8c480ca98132da98976d8591c412e737  numpy-1.20.2-cp37-cp37m-win_amd64.whl
719656636c48be22c23641859ff2419b27b6bdf844b36a2447cb39caceb00935  numpy-1.20.2-cp38-cp38-macosx_10_9_x86_64.whl
aa046527c04688af680217fffac61eec2350ef3f3d7320c07fd33f5c6e7b4d5f  numpy-1.20.2-cp38-cp38-manylinux1_i686.whl
2428b109306075d89d21135bdd6b785f132a1f5a3260c371cee1fae427e12727  numpy-1.20.2-cp38-cp38-manylinux1_x86_64.whl
e8e4fbbb7e7634f263c5b0150a629342cc19b47c5eba8d1cd4363ab3455ab576  numpy-1.20.2-cp38-cp38-manylinux2010_i686.whl
edb1f041a9146dcf02cd7df7187db46ab524b9af2515f392f337c7cbbf5b52cd  numpy-1.20.2-cp38-cp38-manylinux2010_x86_64.whl
c73a7975d77f15f7f68dacfb2bca3d3f479f158313642e8ea9058eea06637931  numpy-1.20.2-cp38-cp38-manylinux2014_aarch64.whl
6c915ee7dba1071554e70a3664a839fbc033e1d6528199d4621eeaaa5487ccd2  numpy-1.20.2-cp38-cp38-win32.whl
471c0571d0895c68da309dacee4e95a0811d0a9f9f532a48dc1bea5f3b7ad2b7  numpy-1.20.2-cp38-cp38-win_amd64.whl
4703b9e937df83f5b6b7447ca5912b5f5f297aba45f91dbbbc63ff9278c7aa98  numpy-1.20.2-cp39-cp39-macosx_10_9_x86_64.whl
abc81829c4039e7e4c30f7897938fa5d4916a09c2c7eb9b244b7a35ddc9656f4  numpy-1.20.2-cp39-cp39-manylinux2010_i686.whl
377751954da04d4a6950191b20539066b4e19e3b559d4695399c5e8e3e683bf6  numpy-1.20.2-cp39-cp39-manylinux2010_x86_64.whl
6e51e417d9ae2e7848314994e6fc3832c9d426abce9328cf7571eefceb43e6c9  numpy-1.20.2-cp39-cp39-manylinux2014_aarch64.whl
780ae5284cb770ade51d4b4a7dce4faa554eb1d88a56d0e8b9f35fca9b0270ff  numpy-1.20.2-cp39-cp39-win32.whl
924dc3f83de20437de95a73516f36e09918e9c9c18d5eac520062c49191025fb  numpy-1.20.2-cp39-cp39-win_amd64.whl
97ce8b8ace7d3b9288d88177e66ee75480fb79b9cf745e91ecfe65d91a856042  numpy-1.20.2-pp37-pypy37_pp73-manylinux2010_x86_64.whl
c049f410c78e76ffb0af830a8afbdf8baac09897b4152b97b1a3b8345ee338ff  numpy-1.20.2.tar.gz
878922bf5ad7550aa044aa9301d417e2d3ae50f0f577de92051d739ac6096cee  numpy-1.20.2.zip
numpy -

Published by charris over 3 years ago

NumPy 1.20.1 Release Notes

NumPy 1.20.1 is a rapid bugfix release fixing several bugs and
regressions reported after the 1.20.0 release.

Highlights

  • The distutils bug that caused problems with downstream projects is
    fixed.
  • The random.shuffle regression is fixed.

Contributors

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

  • Bas van Beek
  • Charles Harris
  • Nicholas McKibben +
  • Pearu Peterson
  • Ralf Gommers
  • Sebastian Berg
  • Tyler Reddy
  • @Aerysv +

Pull requests merged

A total of 15 pull requests were merged for this release.

  • #18306: MAINT: Add missing placeholder annotations
  • #18310: BUG: Fix typo in numpy.__init__.py
  • #18326: BUG: don't mutate list of fake libraries while iterating over...
  • #18327: MAINT: gracefully shuffle memoryviews
  • #18328: BUG: Use C linkage for random distributions
  • #18336: CI: fix when GitHub Actions builds trigger, and allow ci skips
  • #18337: BUG: Allow unmodified use of isclose, allclose, etc. with timedelta
  • #18345: BUG: Allow pickling all relevant DType types/classes
  • #18351: BUG: Fix missing signed_char dependency. Closes #18335.
  • #18352: DOC: Change license date 2020 -> 2021
  • #18353: CI: CircleCI seems to occasionally time out, increase the limit
  • #18354: BUG: Fix f2py bugs when wrapping F90 subroutines.
  • #18356: MAINT: crackfortran regex simplify
  • #18357: BUG: threads.h existence test requires GLIBC > 2.12.
  • #18359: REL: Prepare for the NumPy 1.20.1 release.

Checksums

MD5

c4748f4f8f703c5e96027407eca02b08  numpy-1.20.1-cp37-cp37m-macosx_10_9_x86_64.whl
f0bf3a78d6b3a169e5a7fb2637f7fd87  numpy-1.20.1-cp37-cp37m-manylinux1_i686.whl
493c17647c05ca5043bcbab1ac266a74  numpy-1.20.1-cp37-cp37m-manylinux1_x86_64.whl
55ec954fc598c72b2bbf57bfa8b2a701  numpy-1.20.1-cp37-cp37m-manylinux2010_i686.whl
8cee88f9683d208686081522609a8726  numpy-1.20.1-cp37-cp37m-manylinux2010_x86_64.whl
26399d3ededc53b354de78f977a6197e  numpy-1.20.1-cp37-cp37m-manylinux2014_aarch64.whl
81051f1e7a79eea8a5aaf5718114ce3a  numpy-1.20.1-cp37-cp37m-win32.whl
899488c55824f02a7a6f0451fc86f63f  numpy-1.20.1-cp37-cp37m-win_amd64.whl
17f4dae5a0d143b46345a9cf1a8c8dec  numpy-1.20.1-cp38-cp38-macosx_10_9_x86_64.whl
f254e98e92b3054c567b6220b37b81d3  numpy-1.20.1-cp38-cp38-manylinux1_i686.whl
483f43a62c7e32ae991990786da90de1  numpy-1.20.1-cp38-cp38-manylinux1_x86_64.whl
bf578b783e36d3feb3344973306a9f96  numpy-1.20.1-cp38-cp38-manylinux2010_i686.whl
f5d6c77c898537017e64ee30b243fdca  numpy-1.20.1-cp38-cp38-manylinux2010_x86_64.whl
5cf541a0d5af3d5812d2970a427075fb  numpy-1.20.1-cp38-cp38-manylinux2014_aarch64.whl
178315c579c0a70285b8ee502eb498af  numpy-1.20.1-cp38-cp38-win32.whl
5164a32e7a00a2b285302b563eb58afe  numpy-1.20.1-cp38-cp38-win_amd64.whl
c123dd10788ea9ff788d735cbee444c5  numpy-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl
72282fefe58650c6e7cc41f5b37b8662  numpy-1.20.1-cp39-cp39-manylinux2010_i686.whl
234d57c1a7b1f8b99c054a7a71a51cbe  numpy-1.20.1-cp39-cp39-manylinux2010_x86_64.whl
352243d4285970e45d825024ca566d47  numpy-1.20.1-cp39-cp39-manylinux2014_aarch64.whl
a78c863323e0f56210c2e1acaad1bc22  numpy-1.20.1-cp39-cp39-win32.whl
86f9d3f358e7d7896e713bce99f17fdd  numpy-1.20.1-cp39-cp39-win_amd64.whl
ed2c81132119fb3c7f73c6a2de306058  numpy-1.20.1-pp37-pypy37_pp73-manylinux2010_x86_64.whl
60a5e2517be19394a7df24f6d4add3f2  numpy-1.20.1.tar.gz
30ea1c7868e73eeff2c86ac465311220  numpy-1.20.1.zip

SHA256

ae61f02b84a0211abb56462a3b6cd1e7ec39d466d3160eb4e1da8bf6717cdbeb  numpy-1.20.1-cp37-cp37m-macosx_10_9_x86_64.whl
65410c7f4398a0047eea5cca9b74009ea61178efd78d1be9847fac1d6716ec1e  numpy-1.20.1-cp37-cp37m-manylinux1_i686.whl
2d7e27442599104ee08f4faed56bb87c55f8b10a5494ac2ead5c98a4b289e61f  numpy-1.20.1-cp37-cp37m-manylinux1_x86_64.whl
4ed8e96dc146e12c1c5cdd6fb9fd0757f2ba66048bf94c5126b7efebd12d0090  numpy-1.20.1-cp37-cp37m-manylinux2010_i686.whl
ecb5b74c702358cdc21268ff4c37f7466357871f53a30e6f84c686952bef16a9  numpy-1.20.1-cp37-cp37m-manylinux2010_x86_64.whl
b9410c0b6fed4a22554f072a86c361e417f0258838957b78bd063bde2c7f841f  numpy-1.20.1-cp37-cp37m-manylinux2014_aarch64.whl
3d3087e24e354c18fb35c454026af3ed8997cfd4997765266897c68d724e4845  numpy-1.20.1-cp37-cp37m-win32.whl
89f937b13b8dd17b0099c7c2e22066883c86ca1575a975f754babc8fbf8d69a9  numpy-1.20.1-cp37-cp37m-win_amd64.whl
a1d7995d1023335e67fb070b2fae6f5968f5be3802b15ad6d79d81ecaa014fe0  numpy-1.20.1-cp38-cp38-macosx_10_9_x86_64.whl
60759ab15c94dd0e1ed88241fd4fa3312db4e91d2c8f5a2d4cf3863fad83d65b  numpy-1.20.1-cp38-cp38-manylinux1_i686.whl
125a0e10ddd99a874fd357bfa1b636cd58deb78ba4a30b5ddb09f645c3512e04  numpy-1.20.1-cp38-cp38-manylinux1_x86_64.whl
c26287dfc888cf1e65181f39ea75e11f42ffc4f4529e5bd19add57ad458996e2  numpy-1.20.1-cp38-cp38-manylinux2010_i686.whl
7199109fa46277be503393be9250b983f325880766f847885607d9b13848f257  numpy-1.20.1-cp38-cp38-manylinux2010_x86_64.whl
72251e43ac426ff98ea802a931922c79b8d7596480300eb9f1b1e45e0543571e  numpy-1.20.1-cp38-cp38-manylinux2014_aarch64.whl
c91ec9569facd4757ade0888371eced2ecf49e7982ce5634cc2cf4e7331a4b14  numpy-1.20.1-cp38-cp38-win32.whl
13adf545732bb23a796914fe5f891a12bd74cf3d2986eed7b7eba2941eea1590  numpy-1.20.1-cp38-cp38-win_amd64.whl
104f5e90b143dbf298361a99ac1af4cf59131218a045ebf4ee5990b83cff5fab  numpy-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl
89e5336f2bec0c726ac7e7cdae181b325a9c0ee24e604704ed830d241c5e47ff  numpy-1.20.1-cp39-cp39-manylinux2010_i686.whl
032be656d89bbf786d743fee11d01ef318b0781281241997558fa7950028dd29  numpy-1.20.1-cp39-cp39-manylinux2010_x86_64.whl
66b467adfcf628f66ea4ac6430ded0614f5cc06ba530d09571ea404789064adc  numpy-1.20.1-cp39-cp39-manylinux2014_aarch64.whl
12e4ba5c6420917571f1a5becc9338abbde71dd811ce40b37ba62dec7b39af6d  numpy-1.20.1-cp39-cp39-win32.whl
9c94cab5054bad82a70b2e77741271790304651d584e2cdfe2041488e753863b  numpy-1.20.1-cp39-cp39-win_amd64.whl
9eb551d122fadca7774b97db8a112b77231dcccda8e91a5bc99e79890797175e  numpy-1.20.1-pp37-pypy37_pp73-manylinux2010_x86_64.whl
9bf51d69ebb4ca9239e55bedc2185fe2c0ec222da0adee7ece4125414676846d  numpy-1.20.1.tar.gz
3bc63486a870294683980d76ec1e3efc786295ae00128f9ea38e2c6e74d5a60a  numpy-1.20.1.zip
numpy -

Published by charris over 3 years ago

NumPy 1.20.0 Release Notes

This NumPy release is the largest so made to date, some 684 PRs
contributed by 184 people have been merged. See the list of highlights
below for more details. The Python versions supported for this release
are 3.7-3.9, support for Python 3.6 has been dropped. Highlights are

  • Annotations for NumPy functions. This work is ongoing and
    improvements can be expected pending feedback from users.
  • Wider use of SIMD to increase execution speed of ufuncs. Much work
    has been done in introducing universal functions that will ease use
    of modern features across different hardware platforms. This work is
    ongoing.
  • Preliminary work in changing the dtype and casting implementations
    in order to provide an easier path to extending dtypes. This work is
    ongoing but enough has been done to allow experimentation and
    feedback.
  • Extensive documentation improvements comprising some 185 PR merges.
    This work is ongoing and part of the larger project to improve
    NumPy's online presence and usefulness to new users.
  • Further cleanups related to removing Python 2.7. This improves code
    readability and removes technical debt.
  • Preliminary support for the upcoming Cython 3.0.

New functions

The random.Generator class has a new permuted function.

The new function differs from shuffle and permutation in that the
subarrays indexed by an axis are permuted rather than the axis being
treated as a separate 1-D array for every combination of the other
indexes. For example, it is now possible to permute the rows or columns
of a 2-D array.

(gh-15121)

sliding_window_view provides a sliding window view for numpy arrays

numpy.lib.stride\_tricks.sliding\_window\_view constructs
views on numpy arrays that offer a sliding or moving window access to
the array. This allows for the simple implementation of certain
algorithms, such as running means.

(gh-17394)

[numpy.broadcast_shapes]{.title-ref} is a new user-facing function

numpy.broadcast\_shapes gets the resulting shape from
broadcasting the given shape tuples against each other.

>>> np.broadcast_shapes((1, 2), (3, 1))
(3, 2)

>>> np.broadcast_shapes(2, (3, 1))
(3, 2)

>>> np.broadcast_shapes((6, 7), (5, 6, 1), (7,), (5, 1, 7))
(5, 6, 7)

(gh-17535)

Deprecations

Using the aliases of builtin types like np.int is deprecated

For a long time, np.int has been an alias of the builtin int. This
is repeatedly a cause of confusion for newcomers, and existed mainly for
historic reasons.

These aliases have been deprecated. The table below shows the full list
of deprecated aliases, along with their exact meaning. Replacing uses of
items in the first column with the contents of the second column will
work identically and silence the deprecation warning.

The third column lists alternative NumPy names which may occasionally be
preferential. See also basics.types{.interpreted-text role="ref"} for
additional details.

Deprecated name Identical to NumPy scalar type names
numpy.bool bool numpy.bool\_
numpy.int int numpy.int\_ (default), numpy.int64, or numpy.int32
numpy.float float numpy.float64, numpy.float\_, numpy.double (equivalent)
numpy.complex complex numpy.complex128, numpy.complex\_, numpy.cdouble (equivalent)
numpy.object object numpy.object\_
numpy.str str numpy.str\_
numpy.long int numpy.int\_ (C long), numpy.longlong (largest integer type)
numpy.unicode str numpy.unicode\_

To give a clear guideline for the vast majority of cases, for the types
bool, object, str (and unicode) using the plain version is
shorter and clear, and generally a good replacement. For float and
complex you can use float64 and complex128 if you wish to be more
explicit about the precision.

For np.int a direct replacement with np.int_ or int is also good
and will not change behavior, but the precision will continue to depend
on the computer and operating system. If you want to be more explicit
and review the current use, you have the following alternatives:

  • np.int64 or np.int32 to specify the precision exactly. This
    ensures that results cannot depend on the computer or operating
    system.
  • np.int_ or int (the default), but be aware that it depends on
    the computer and operating system.
  • The C types: np.cint (int), np.int_ (long), np.longlong.
  • np.intp which is 32bit on 32bit machines 64bit on 64bit machines.
    This can be the best type to use for indexing.

When used with np.dtype(...) or dtype=... changing it to the NumPy
name as mentioned above will have no effect on the output. If used as a
scalar with:

np.float(123)

changing it can subtly change the result. In this case, the Python
version float(123) or int(12.) is normally preferable, although the
NumPy version may be useful for consistency with NumPy arrays (for
example, NumPy behaves differently for things like division by zero).

(gh-14882)

Passing shape=None to functions with a non-optional shape argument is deprecated

Previously, this was an alias for passing shape=(). This deprecation
is emitted by PyArray\_IntpConverter in the C API. If your
API is intended to support passing None, then you should check for
None prior to invoking the converter, so as to be able to distinguish
None and ().

(gh-15886)

Indexing errors will be reported even when index result is empty

In the future, NumPy will raise an IndexError when an integer array
index contains out of bound values even if a non-indexed dimension is of
length 0. This will now emit a DeprecationWarning. This can happen when
the array is previously empty, or an empty slice is involved:

arr1 = np.zeros((5, 0))
arr1[[20]]
arr2 = np.zeros((5, 5))
arr2[[20], :0]

Previously the non-empty index [20] was not checked for correctness.
It will now be checked causing a deprecation warning which will be
turned into an error. This also applies to assignments.

(gh-15900)

Inexact matches for mode and searchside are deprecated

Inexact and case insensitive matches for mode and searchside were
valid inputs earlier and will give a DeprecationWarning now. For
example, below are some example usages which are now deprecated and will
give a DeprecationWarning:

import numpy as np
arr = np.array([[3, 6, 6], [4, 5, 1]])
# mode: inexact match
np.ravel_multi_index(arr, (7, 6), mode="clap")  # should be "clip"
# searchside: inexact match
np.searchsorted(arr[0], 4, side='random')  # should be "right"

(gh-16056)

Deprecation of [numpy.dual]{.title-ref}

The module numpy.dual is deprecated. Instead of importing
functions from numpy.dual, the functions should be
imported directly from NumPy or SciPy.

(gh-16156)

outer and ufunc.outer deprecated for matrix

np.matrix use with \~numpy.outer or generic ufunc outer
calls such as numpy.add.outer. Previously, matrix was converted to an
array here. This will not be done in the future requiring a manual
conversion to arrays.

(gh-16232)

Further Numeric Style types Deprecated

The remaining numeric-style type codes Bytes0, Str0, Uint32,
Uint64, and Datetime64 have been deprecated. The lower-case variants
should be used instead. For bytes and string "S" and "U" are further
alternatives.

(gh-16554)

The ndincr method of ndindex is deprecated

The documentation has warned against using this function since NumPy
1.8. Use next(it) instead of it.ndincr().

(gh-17233)

ArrayLike objects which do not define __len__ and __getitem__

Objects which define one of the protocols __array__,
__array_interface__, or __array_struct__ but are not sequences
(usually defined by having a __len__ and __getitem__) will behave
differently during array-coercion in the future.

When nested inside sequences, such as np.array([array_like]), these
were handled as a single Python object rather than an array. In the
future they will behave identically to:

np.array([np.array(array_like)])

This change should only have an effect if np.array(array_like) is not
0-D. The solution to this warning may depend on the object:

  • Some array-likes may expect the new behaviour, and users can ignore
    the warning. The object can choose to expose the sequence protocol
    to opt-in to the new behaviour.
  • For example, shapely will allow conversion to an array-like using
    line.coords rather than np.asarray(line). Users may work around
    the warning, or use the new convention when it becomes available.

Unfortunately, using the new behaviour can only be achieved by calling
np.array(array_like).

If you wish to ensure that the old behaviour remains unchanged, please
create an object array and then fill it explicitly, for example:

arr = np.empty(3, dtype=object)
arr[:] = [array_like1, array_like2, array_like3]

This will ensure NumPy knows to not enter the array-like and use it as a
object instead.

(gh-17973)

Future Changes

Arrays cannot be using subarray dtypes

Array creation and casting using np.array(arr, dtype) and
arr.astype(dtype) will use different logic when dtype is a subarray
dtype such as np.dtype("(2)i,").

For such a dtype the following behaviour is true:

res = np.array(arr, dtype)

res.dtype is not dtype
res.dtype is dtype.base
res.shape == arr.shape + dtype.shape

But res is filled using the logic:

res = np.empty(arr.shape + dtype.shape, dtype=dtype.base)
res[...] = arr

which uses incorrect broadcasting (and often leads to an error). In the
future, this will instead cast each element individually, leading to the
same result as:

res = np.array(arr, dtype=np.dtype(["f", dtype]))["f"]

Which can normally be used to opt-in to the new behaviour.

This change does not affect np.array(list, dtype="(2)i,") unless the
list itself includes at least one array. In particular, the behaviour
is unchanged for a list of tuples.

(gh-17596)

Expired deprecations

  • The deprecation of numeric style type-codes np.dtype("Complex64")
    (with upper case spelling), is expired. "Complex64" corresponded
    to "complex128" and "Complex32" corresponded to "complex64".

  • The deprecation of np.sctypeNA and np.typeNA is expired. Both
    have been removed from the public API. Use np.typeDict instead.

    (gh-16554)

  • The 14-year deprecation of np.ctypeslib.ctypes_load_library is
    expired. Use ~numpy.ctypeslib.load_library{.interpreted-text
    role="func"} instead, which is identical.

    (gh-17116)

Financial functions removed

In accordance with NEP 32, the financial functions are removed from
NumPy 1.20. The functions that have been removed are fv, ipmt,
irr, mirr, nper, npv, pmt, ppmt, pv, and rate. These
functions are available in the
numpy_financial library.

(gh-17067)

Compatibility notes

isinstance(dtype, np.dtype) and not type(dtype) is not np.dtype

NumPy dtypes are not direct instances of np.dtype anymore. Code that
may have used type(dtype) is np.dtype will always return False and
must be updated to use the correct version
isinstance(dtype, np.dtype).

This change also affects the C-side macro PyArray_DescrCheck if
compiled against a NumPy older than 1.16.6. If code uses this macro and
wishes to compile against an older version of NumPy, it must replace the
macro (see also C API changes section).

Same kind casting in concatenate with axis=None

When [~numpy.concatenate]{.title-ref} is called with axis=None, the
flattened arrays were cast with unsafe. Any other axis choice uses
"same kind". That different default has been deprecated and "same
kind" casting will be used instead. The new casting keyword argument
can be used to retain the old behaviour.

(gh-16134)

NumPy Scalars are cast when assigned to arrays

When creating or assigning to arrays, in all relevant cases NumPy
scalars will now be cast identically to NumPy arrays. In particular this
changes the behaviour in some cases which previously raised an error:

np.array([np.float64(np.nan)], dtype=np.int64)

will succeed and return an undefined result (usually the smallest
possible integer). This also affects assignments:

arr[0] = np.float64(np.nan)

At this time, NumPy retains the behaviour for:

np.array(np.float64(np.nan), dtype=np.int64)

The above changes do not affect Python scalars:

np.array([float("NaN")], dtype=np.int64)

remains unaffected (np.nan is a Python float, not a NumPy one).
Unlike signed integers, unsigned integers do not retain this special
case, since they always behaved more like casting. The following code
stops raising an error:

np.array([np.float64(np.nan)], dtype=np.uint64)

To avoid backward compatibility issues, at this time assignment from
datetime64 scalar to strings of too short length remains supported.
This means that np.asarray(np.datetime64("2020-10-10"), dtype="S5")
succeeds now, when it failed before. In the long term this may be
deprecated or the unsafe cast may be allowed generally to make
assignment of arrays and scalars behave consistently.

Array coercion changes when Strings and other types are mixed

When strings and other types are mixed, such as:

np.array(["string", np.float64(3.)], dtype="S")

The results will change, which may lead to string dtypes with longer
strings in some cases. In particularly, if dtype="S" is not provided
any numerical value will lead to a string results long enough to hold
all possible numerical values. (e.g. "S32" for floats). Note that you
should always provide dtype="S" when converting non-strings to
strings.

If dtype="S" is provided the results will be largely identical to
before, but NumPy scalars (not a Python float like 1.0), will still
enforce a uniform string length:

np.array([np.float64(3.)], dtype="S")  # gives "S32"
np.array([3.0], dtype="S")  # gives "S3"

Previously the first version gave the same result as the second.

Array coercion restructure

Array coercion has been restructured. In general, this should not affect
users. In extremely rare corner cases where array-likes are nested:

np.array([array_like1])

Things will now be more consistent with:

np.array([np.array(array_like1)])

This can subtly change output for some badly defined array-likes. One
example for this are array-like objects which are not also sequences of
matching shape. In NumPy 1.20, a warning will be given when an
array-like is not also a sequence (but behaviour remains identical, see
deprecations). If an array like is also a sequence (defines
__getitem__ and __len__) NumPy will now only use the result given by
__array__, __array_interface__, or __array_struct__. This will
result in differences when the (nested) sequence describes a different
shape.

(gh-16200)

Writing to the result of numpy.broadcast\_arrays will export readonly buffers

In NumPy 1.17 numpy.broadcast\_arrays started warning when
the resulting array was written to. This warning was skipped when the
array was used through the buffer interface (e.g. memoryview(arr)).
The same thing will now occur for the two protocols
__array_interface__, and __array_struct__ returning read-only
buffers instead of giving a warning.

(gh-16350)

Numeric-style type names have been removed from type dictionaries

To stay in sync with the deprecation for np.dtype("Complex64") and
other numeric-style (capital case) types. These were removed from
np.sctypeDict and np.typeDict. You should use the lower case
versions instead. Note that "Complex64" corresponds to "complex128"
and "Complex32" corresponds to "complex64". The numpy style (new)
versions, denote the full size and not the size of the real/imaginary
part.

(gh-16554)

The operator.concat function now raises TypeError for array arguments

The previous behavior was to fall back to addition and add the two
arrays, which was thought to be unexpected behavior for a concatenation
function.

(gh-16570)

nickname attribute removed from ABCPolyBase

An abstract property nickname has been removed from ABCPolyBase as
it was no longer used in the derived convenience classes. This may
affect users who have derived classes from ABCPolyBase and overridden
the methods for representation and display, e.g. __str__, __repr__,
_repr_latex, etc.

(gh-16589)

float->timedelta and uint64->timedelta promotion will raise a TypeError

Float and timedelta promotion consistently raises a TypeError.
np.promote_types("float32", "m8") aligns with
np.promote_types("m8", "float32") now and both raise a TypeError.
Previously, np.promote_types("float32", "m8") returned "m8" which
was considered a bug.

Uint64 and timedelta promotion consistently raises a TypeError.
np.promote_types("uint64", "m8") aligns with
np.promote_types("m8", "uint64") now and both raise a TypeError.
Previously, np.promote_types("uint64", "m8") returned "m8" which was
considered a bug.

(gh-16592)

numpy.genfromtxt now correctly unpacks structured arrays

Previously, numpy.genfromtxt failed to unpack if it was
called with unpack=True and a structured datatype was passed to the
dtype argument (or dtype=None was passed and a structured datatype
was inferred). For example:

>>> data = StringIO("21 58.0\n35 72.0")
>>> np.genfromtxt(data, dtype=None, unpack=True)
array([(21, 58.), (35, 72.)], dtype=[('f0', '<i8'), ('f1', '<f8')])

Structured arrays will now correctly unpack into a list of arrays, one
for each column:

>>> np.genfromtxt(data, dtype=None, unpack=True)
[array([21, 35]), array([58., 72.])]

(gh-16650)

mgrid, r_, etc. consistently return correct outputs for non-default precision input

Previously,
np.mgrid[np.float32(0.1):np.float32(0.35):np.float32(0.1),] and
np.r_[0:10:np.complex64(3j)] failed to return meaningful output. This
bug potentially affects [~numpy.mgrid]{.title-ref},
numpy.ogrid, numpy.r\_, and
numpy.c\_ when an input with dtype other than the
default float64 and complex128 and equivalent Python types were
used. The methods have been fixed to handle varying precision correctly.

(gh-16815)

Boolean array indices with mismatching shapes now properly give IndexError

Previously, if a boolean array index matched the size of the indexed
array but not the shape, it was incorrectly allowed in some cases. In
other cases, it gave an error, but the error was incorrectly a
ValueError with a message about broadcasting instead of the correct
IndexError.

For example, the following used to incorrectly give
ValueError: operands could not be broadcast together with shapes (2,2) (1,4):

np.empty((2, 2))[np.array([[True, False, False, False]])]

And the following used to incorrectly return array([], dtype=float64):

np.empty((2, 2))[np.array([[False, False, False, False]])]

Both now correctly give
IndexError: boolean index did not match indexed array along dimension 0; dimension is 2 but corresponding boolean dimension is 1.

(gh-17010)

Casting errors interrupt Iteration

When iterating while casting values, an error may stop the iteration
earlier than before. In any case, a failed casting operation always
returned undefined, partial results. Those may now be even more
undefined and partial. For users of the NpyIter C-API such cast errors
will now cause the [iternext()]{.title-ref} function to return 0 and
thus abort iteration. Currently, there is no API to detect such an error
directly. It is necessary to check PyErr_Occurred(), which may be
problematic in combination with NpyIter_Reset. These issues always
existed, but new API could be added if required by users.

(gh-17029)

f2py generated code may return unicode instead of byte strings

Some byte strings previously returned by f2py generated code may now be
unicode strings. This results from the ongoing Python2 -> Python3
cleanup.

(gh-17068)

The first element of the __array_interface__["data"] tuple must be an integer

This has been the documented interface for many years, but there was
still code that would accept a byte string representation of the pointer
address. That code has been removed, passing the address as a byte
string will now raise an error.

(gh-17241)

poly1d respects the dtype of all-zero argument

Previously, constructing an instance of poly1d with all-zero
coefficients would cast the coefficients to np.float64. This affected
the output dtype of methods which construct poly1d instances
internally, such as np.polymul.

(gh-17577)

The numpy.i file for swig is Python 3 only.

Uses of Python 2.7 C-API functions have been updated to Python 3 only.
Users who need the old version should take it from an older version of
NumPy.

(gh-17580)

Void dtype discovery in np.array

In calls using np.array(..., dtype="V"), arr.astype("V"), and
similar a TypeError will now be correctly raised unless all elements
have the identical void length. An example for this is:

np.array([b"1", b"12"], dtype="V")

Which previously returned an array with dtype "V2" which cannot
represent b"1" faithfully.

(gh-17706)

C API changes

The PyArray_DescrCheck macro is modified

The PyArray_DescrCheck macro has been updated since NumPy 1.16.6 to
be:

#define PyArray_DescrCheck(op) PyObject_TypeCheck(op, &PyArrayDescr_Type)

Starting with NumPy 1.20 code that is compiled against an earlier
version will be API incompatible with NumPy 1.20. The fix is to either
compile against 1.16.6 (if the NumPy 1.16 release is the oldest release
you wish to support), or manually inline the macro by replacing it with
the new definition:

PyObject_TypeCheck(op, &PyArrayDescr_Type)

which is compatible with all NumPy versions.

Size of np.ndarray and np.void_ changed

The size of the PyArrayObject and PyVoidScalarObject structures have
changed. The following header definition has been removed:

#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))

since the size must not be considered a compile time constant: it will
change for different runtime versions of NumPy.

The most likely relevant use are potential subclasses written in C which
will have to be recompiled and should be updated. Please see the
documentation for :cPyArrayObject{.interpreted-text role="type"} for
more details and contact the NumPy developers if you are affected by
this change.

NumPy will attempt to give a graceful error but a program expecting a
fixed structure size may have undefined behaviour and likely crash.

(gh-16938)

New Features

where keyword argument for numpy.all and numpy.any functions

The keyword argument where is added and allows to only consider
specified elements or subaxes from an array in the Boolean evaluation of
all and any. This new keyword is available to the functions all
and any both via numpy directly or in the methods of
numpy.ndarray.

Any broadcastable Boolean array or a scalar can be set as where. It
defaults to True to evaluate the functions for all elements in an
array if where is not set by the user. Examples are given in the
documentation of the functions.

where keyword argument for numpy functions mean, std, var

The keyword argument where is added and allows to limit the scope in
the calculation of mean, std and var to only a subset of elements.
It is available both via numpy directly or in the methods of
numpy.ndarray.

Any broadcastable Boolean array or a scalar can be set as where. It
defaults to True to evaluate the functions for all elements in an
array if where is not set by the user. Examples are given in the
documentation of the functions.

(gh-15852)

norm=backward, forward keyword options for numpy.fft functions

The keyword argument option norm=backward is added as an alias for
None and acts as the default option; using it has the direct
transforms unscaled and the inverse transforms scaled by 1/n.

Using the new keyword argument option norm=forward has the direct
transforms scaled by 1/n and the inverse transforms unscaled (i.e.
exactly opposite to the default option norm=backward).

(gh-16476)

NumPy is now typed

Type annotations have been added for large parts of NumPy. There is also
a new [numpy.typing]{.title-ref} module that contains useful types for
end-users. The currently available types are

  • ArrayLike: for objects that can be coerced to an array
  • DtypeLike: for objects that can be coerced to a dtype

(gh-16515)

numpy.typing is accessible at runtime

The types in numpy.typing can now be imported at runtime. Code like
the following will now work:

from numpy.typing import ArrayLike
x: ArrayLike = [1, 2, 3, 4]

(gh-16558)

New __f2py_numpy_version__ attribute for f2py generated modules.

Because f2py is released together with NumPy, __f2py_numpy_version__
provides a way to track the version f2py used to generate the module.

(gh-16594)

mypy tests can be run via runtests.py

Currently running mypy with the NumPy stubs configured requires either:

  • Installing NumPy
  • Adding the source directory to MYPYPATH and linking to the
    mypy.ini

Both options are somewhat inconvenient, so add a --mypy option to
runtests that handles setting things up for you. This will also be
useful in the future for any typing codegen since it will ensure the
project is built before type checking.

(gh-17123)

Negation of user defined BLAS/LAPACK detection order

[~numpy.distutils]{.title-ref} allows negation of libraries when
determining BLAS/LAPACK libraries. This may be used to remove an item
from the library resolution phase, i.e. to disallow NetLIB libraries one
could do:

NPY_BLAS_ORDER='^blas' NPY_LAPACK_ORDER='^lapack' python setup.py build

That will use any of the accelerated libraries instead.

(gh-17219)

Allow passing optimizations arguments to asv build

It is now possible to pass -j, --cpu-baseline, --cpu-dispatch and
--disable-optimization flags to ASV build when the --bench-compare
argument is used.

(gh-17284)

The NVIDIA HPC SDK nvfortran compiler is now supported

Support for the nvfortran compiler, a version of pgfortran, has been
added.

(gh-17344)

dtype option for cov and corrcoef

The dtype option is now available for [numpy.cov]{.title-ref} and
[numpy.corrcoef]{.title-ref}. It specifies which data-type the returned
result should have. By default the functions still return a
[numpy.float64]{.title-ref} result.

(gh-17456)

Improvements

Improved string representation for polynomials (__str__)

The string representation (__str__) of all six polynomial types in
[numpy.polynomial]{.title-ref} has been updated to give the polynomial
as a mathematical expression instead of an array of coefficients. Two
package-wide formats for the polynomial expressions are available - one
using Unicode characters for superscripts and subscripts, and another
using only ASCII characters.

(gh-15666)

Remove the Accelerate library as a candidate LAPACK library

Apple no longer supports Accelerate. Remove it.

(gh-15759)

Object arrays containing multi-line objects have a more readable repr

If elements of an object array have a repr containing new lines, then
the wrapped lines will be aligned by column. Notably, this improves the
repr of nested arrays:

>>> np.array([np.eye(2), np.eye(3)], dtype=object)
array([array([[1., 0.],
              [0., 1.]]),
       array([[1., 0., 0.],
              [0., 1., 0.],
              [0., 0., 1.]])], dtype=object)

(gh-15997)

Concatenate supports providing an output dtype

Support was added to [~numpy.concatenate]{.title-ref} to provide an
output dtype and casting using keyword arguments. The dtype
argument cannot be provided in conjunction with the out one.

(gh-16134)

Thread safe f2py callback functions

Callback functions in f2py are now thread safe.

(gh-16519)

[numpy.core.records.fromfile]{.title-ref} now supports file-like objects

[numpy.rec.fromfile]{.title-ref} can now use file-like objects, for
instance :pyio.BytesIO{.interpreted-text role="class"}

(gh-16675)

RPATH support on AIX added to distutils

This allows SciPy to be built on AIX.

(gh-16710)

Use f90 compiler specified by the command line args

The compiler command selection for Fortran Portland Group Compiler is
changed in [numpy.distutils.fcompiler]{.title-ref}. This only affects
the linking command. This forces the use of the executable provided by
the command line option (if provided) instead of the pgfortran
executable. If no executable is provided to the command line option it
defaults to the pgf90 executable, wich is an alias for pgfortran
according to the PGI documentation.

(gh-16730)

Add NumPy declarations for Cython 3.0 and later

The pxd declarations for Cython 3.0 were improved to avoid using
deprecated NumPy C-API features. Extension modules built with Cython
3.0+ that use NumPy can now set the C macro
NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION to avoid C compiler warnings
about deprecated API usage.

(gh-16986)

Make the window functions exactly symmetric

Make sure the window functions provided by NumPy are symmetric. There
were previously small deviations from symmetry due to numerical
precision that are now avoided by better arrangement of the computation.

(gh-17195)

Performance improvements and changes

Enable multi-platform SIMD compiler optimizations

A series of improvements for NumPy infrastructure to pave the way to
NEP-38, that can be summarized as follow:

  • New Build Arguments

    • --cpu-baseline to specify the minimal set of required
      optimizations, default value is min which provides the minimum
      CPU features that can safely run on a wide range of users
      platforms.
    • --cpu-dispatch to specify the dispatched set of additional
      optimizations, default value is max -xop -fma4 which enables
      all CPU features, except for AMD legacy features.
    • --disable-optimization to explicitly disable the whole new
      improvements, It also adds a new C compiler #definition
      called NPY_DISABLE_OPTIMIZATION which it can be used as guard
      for any SIMD code.
  • Advanced CPU dispatcher

    A flexible cross-architecture CPU dispatcher built on the top of
    Python/Numpy distutils, support all common compilers with a wide
    range of CPU features.

    The new dispatcher requires a special file extension *.dispatch.c
    to mark the dispatch-able C sources. These sources have the
    ability to be compiled multiple times so that each compilation
    process represents certain CPU features and provides different
    #definitions and flags that affect the code paths.

  • New auto-generated C header
    ``core/src/common/_cpu_dispatch.h``

    This header is generated by the distutils module ccompiler_opt,
    and contains all the #definitions and headers of instruction sets,
    that had been configured through command arguments
    '--cpu-baseline' and '--cpu-dispatch'.

  • New C header ``core/src/common/npy_cpu_dispatch.h``

    This header contains all utilities that required for the whole CPU
    dispatching process, it also can be considered as a bridge linking
    the new infrastructure work with NumPy CPU runtime detection.

  • Add new attributes to NumPy umath module(Python level)

    • __cpu_baseline__ a list contains the minimal set of required
      optimizations that supported by the compiler and platform
      according to the specified values to command argument
      '--cpu-baseline'.
    • __cpu_dispatch__ a list contains the dispatched set of
      additional optimizations that supported by the compiler and
      platform according to the specified values to command argument
      '--cpu-dispatch'.
  • Print the supported CPU features during the run of PytestTester

(gh-13516)

Changes

Changed behavior of divmod(1., 0.) and related functions

The changes also assure that different compiler versions have the same
behavior for nan or inf usages in these operations. This was previously
compiler dependent, we now force the invalid and divide by zero flags,
making the results the same across compilers. For example, gcc-5, gcc-8,
or gcc-9 now result in the same behavior. The changes are tabulated
below:

Operator Old Warning New Warning Old Result New Result Works on MacOS
np.divmod(1.0, 0.0) Invalid Invalid and Dividebyzero nan, nan inf, nan Yes
np.fmod(1.0, 0.0) Invalid Invalid nan nan No? Yes
np.floor_divide(1.0, 0.0) Invalid Dividebyzero nan inf Yes
np.remainder(1.0, 0.0) Invalid Invalid nan nan Yes

: Summary of New Behavior

(gh-16161)

np.linspace on integers now uses floor

When using a int dtype in [numpy.linspace]{.title-ref}, previously
float values would be rounded towards zero. Now
[numpy.floor]{.title-ref} is used instead, which rounds toward -inf.
This changes the results for negative values. For example, the following
would previously give:

>>> np.linspace(-3, 1, 8, dtype=int)
array([-3, -2, -1, -1,  0,  0,  0,  1])

and now results in:

>>> np.linspace(-3, 1, 8, dtype=int)
array([-3, -3, -2, -2, -1, -1,  0,  1])

The former result can still be obtained with:

>>> np.linspace(-3, 1, 8).astype(int)
array([-3, -2, -1, -1,  0,  0,  0,  1])

(gh-16841)

Checksums

MD5

6f43f51475706d8346cee9604ed54e8a  numpy-1.20.0-cp37-cp37m-macosx_10_9_x86_64.whl
c77f563595ab4bab6185c795c573a26a  numpy-1.20.0-cp37-cp37m-manylinux1_i686.whl
e8f71fdb7e4e837ae79894b621e3ca08  numpy-1.20.0-cp37-cp37m-manylinux1_x86_64.whl
89c477a3eaf2e3379aa21bf80e2a2812  numpy-1.20.0-cp37-cp37m-manylinux2010_i686.whl
82211490e9375bdad57592139b49184d  numpy-1.20.0-cp37-cp37m-manylinux2010_x86_64.whl
b2d47be4aa123623b39f18723e0d70b7  numpy-1.20.0-cp37-cp37m-manylinux2014_aarch64.whl
e884b218dc2b20895f57fae00534e8ea  numpy-1.20.0-cp37-cp37m-win32.whl
ec8265d429e808d8f92ed46711d66bc7  numpy-1.20.0-cp37-cp37m-win_amd64.whl
791cc5086a755929a1140018067c4587  numpy-1.20.0-cp38-cp38-macosx_10_9_x86_64.whl
2ee146bad9aa521d0bdfd7e30e982a80  numpy-1.20.0-cp38-cp38-manylinux1_i686.whl
83d74204a26e9dd3cb93653818745d09  numpy-1.20.0-cp38-cp38-manylinux1_x86_64.whl
0b0a5e36d4b75a00603cec4db09c44d7  numpy-1.20.0-cp38-cp38-manylinux2010_i686.whl
c192aeac728a3abfbd16daef87b2a307  numpy-1.20.0-cp38-cp38-manylinux2010_x86_64.whl
2282da14106cb52bbf9c8c0b847c3480  numpy-1.20.0-cp38-cp38-manylinux2014_aarch64.whl
0e0e4bf53dd8ea4e232083e788419f30  numpy-1.20.0-cp38-cp38-win32.whl
93ebb884970cf7292778cb19e9f27596  numpy-1.20.0-cp38-cp38-win_amd64.whl
749cca75b33849a78e7238aeb09baded  numpy-1.20.0-cp39-cp39-macosx_10_9_x86_64.whl
e36e7e259bb38ccd2320f88a137115e0  numpy-1.20.0-cp39-cp39-manylinux2010_i686.whl
4979a98a2cf0a1b14a82630b717aa12b  numpy-1.20.0-cp39-cp39-manylinux2010_x86_64.whl
52a78d15f15959003047ccb6b66a0ee7  numpy-1.20.0-cp39-cp39-manylinux2014_aarch64.whl
796b273028c7724a855214ae9a83e4f8  numpy-1.20.0-cp39-cp39-win32.whl
663428d8bedc5785041800ce098368cd  numpy-1.20.0-cp39-cp39-win_amd64.whl
66ea4e7911de7fdce688c1b69f9c7c54  numpy-1.20.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl
fc7c970084438911a50efaa8cddccebc  numpy-1.20.0.tar.gz
024eb99dba56c3021458caf86f2fea0a  numpy-1.20.0.zip

SHA256

89bd70c9ad540febe6c28451ba225eb4e49d27f64728357f512c808002325dfa  numpy-1.20.0-cp37-cp37m-macosx_10_9_x86_64.whl
1264c66129f5ef63187649dd43f1ca59532e8c098723643336a85131c0dcce3f  numpy-1.20.0-cp37-cp37m-manylinux1_i686.whl
e9c5fd330d2fedf06051bafb996252de9b032fcb2ec03eefc9a543e56efa66d4  numpy-1.20.0-cp37-cp37m-manylinux1_x86_64.whl
db5e69d08756a2fa75a42b4e433880b6187768fe1bc73d21819def893e5128c6  numpy-1.20.0-cp37-cp37m-manylinux2010_i686.whl
1abc02e30e3efd81a4571e00f8e62bf42e343c76698e0a3e11d9c2b3ee0d77a7  numpy-1.20.0-cp37-cp37m-manylinux2010_x86_64.whl
5ae765dd29c71a555f8102281f6fb15a3f4dbd35f6e7daf36af9df6d9dd716a5  numpy-1.20.0-cp37-cp37m-manylinux2014_aarch64.whl
b51b9ef0624f4b01b846c981034c10d2e30db33f9f8be71e992f3900741f6f77  numpy-1.20.0-cp37-cp37m-win32.whl
afeee581b50df20ef07b736e62ca612858f1fcdba96651d26ab44e3d567a4e6e  numpy-1.20.0-cp37-cp37m-win_amd64.whl
2bf0e68c92ef077fe766e53f8937d8ac341bdbca68ec128ae049b7d5c34e3206  numpy-1.20.0-cp38-cp38-macosx_10_9_x86_64.whl
2445a96fbae23a4109c61be0f0af0f3bc273905dc5687a710850c1dfde0fc994  numpy-1.20.0-cp38-cp38-manylinux1_i686.whl
33edfc0eb229f86f539493917b34035054313a11afbed48404aaf9f86bf4b0f6  numpy-1.20.0-cp38-cp38-manylinux1_x86_64.whl
894aaee60043a98b03f0ad992c810f62e3a15f98a701e1c0f58a4f4a0df13429  numpy-1.20.0-cp38-cp38-manylinux2010_i686.whl
b66a6c15d793eda7cdad986e737775aa31b9306d588c14dd0277d2dda5546150  numpy-1.20.0-cp38-cp38-manylinux2010_x86_64.whl
eee454d3aa3955d0c0069a0f265fea47f1e1384c35a110a95efed358eb6e1562  numpy-1.20.0-cp38-cp38-manylinux2014_aarch64.whl
abdfa075e293d73638ece434708aa60b510dc6e70d805f57f481a0f550b25a9e  numpy-1.20.0-cp38-cp38-win32.whl
f1e9424e9aa3834ea27cc12f9c6ea8ace5da18ee60a720bb3a85b2f733f41782  numpy-1.20.0-cp38-cp38-win_amd64.whl
cb257bb0c0a3176c32782a63cfab2eace7eabfa2a3b2dfd85a13700617ccaf28  numpy-1.20.0-cp39-cp39-macosx_10_9_x86_64.whl
cf5d9dcbdbe523fa665c5309cce5f144648d94a7fddbf5a40f8e0d5c9f5b596d  numpy-1.20.0-cp39-cp39-manylinux2010_i686.whl
93c2abea7bb69f47029b84ceac30ab46dfcfdb99b671ad850a333ff794a765e4  numpy-1.20.0-cp39-cp39-manylinux2010_x86_64.whl
0d28a54afcf46f1f9ebd163e49ad6b49087f22986fefd01a23ca0c1cdda25ca6  numpy-1.20.0-cp39-cp39-manylinux2014_aarch64.whl
d1bc331e1706fd1809a1bc8a31205329e5b30cf5ba50461c624da267e99f6ae6  numpy-1.20.0-cp39-cp39-win32.whl
e3db646af9f6a145f0c57202f4b55d4a33f975e395e78fb7b394644c17c1a3a6  numpy-1.20.0-cp39-cp39-win_amd64.whl
4d592264d2a4f368afbb4288b5ceb646d4cbaf559c0249c096fbb0a149806b90  numpy-1.20.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl
67b630745a71b541ff6517d6f3d62b00690dc8ba0684cad0d7b0ac55aec1de53  numpy-1.20.0.tar.gz
3d8233c03f116d068d5365fed4477f2947c7229582dad81e5953088989294cec  numpy-1.20.0.zip
numpy -

Published by charris almost 4 years ago

NumPy 1.19.5 Release Notes

NumPy 1.19.5 is a short bugfix release. Apart from fixing several bugs,
the main improvement is the update to OpenBLAS 0.3.13 that works around
the windows 2004 bug while not breaking execution on other platforms.
This release supports Python 3.6-3.9 and is planned to be the last
release in the 1.19.x cycle.

Contributors

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

  • Charles Harris
  • Christoph Gohlke
  • Matti Picus
  • Raghuveer Devulapalli
  • Sebastian Berg
  • Simon Graham +
  • Veniamin Petrenko +
  • Bernie Gray +

Pull requests merged

A total of 11 pull requests were merged for this release.

  • #17756: BUG: Fix segfault due to out of bound pointer in floatstatus...
  • #17774: BUG: fix np.timedelta64('nat').__format__ throwing an exception
  • #17775: BUG: Fixed file handle leak in array_tofile.
  • #17786: BUG: Raise recursion error during dimension discovery
  • #17917: BUG: Fix subarray dtype used with too large count in fromfile
  • #17918: BUG: 'bool' object has no attribute 'ndim'
  • #17919: BUG: ensure _UFuncNoLoopError can be pickled
  • #17924: BLD: use BUFFERSIZE=20 in OpenBLAS
  • #18026: BLD: update to OpenBLAS 0.3.13
  • #18036: BUG: make a variable volatile to work around clang compiler bug
  • #18114: REL: Prepare for the NumPy 1.19.5 release.

Checksums

MD5

2651049b70d2ec07d8afd7637f198807  numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl
71cc7869a54cf55df4699aebe27e9344  numpy-1.19.5-cp36-cp36m-manylinux1_i686.whl
28d23e25c6e6654b2f65218c6e9b3825  numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl
fb4128d719d72130cbf24baf308761c9  numpy-1.19.5-cp36-cp36m-manylinux2010_i686.whl
0c8edfbbb26823b7495b5371558b1ae5  numpy-1.19.5-cp36-cp36m-manylinux2010_x86_64.whl
ad8e6247a175f3a9786eedb4baff7c06  numpy-1.19.5-cp36-cp36m-manylinux2014_aarch64.whl
2a3e121d4f242cef4ef00d5e6e3cebc9  numpy-1.19.5-cp36-cp36m-win32.whl
baf1bd7e3a8c19367103483d1fd61cfc  numpy-1.19.5-cp36-cp36m-win_amd64.whl
0086e5551c22e62244781e4179a013c9  numpy-1.19.5-cp37-cp37m-macosx_10_9_x86_64.whl
538fe864a8809a8d9b6b5c102ac8de1f  numpy-1.19.5-cp37-cp37m-manylinux1_i686.whl
5323920ec3e1953078cfa0560ae53867  numpy-1.19.5-cp37-cp37m-manylinux1_x86_64.whl
464f0f6284ede3cb2ea3070fee729048  numpy-1.19.5-cp37-cp37m-manylinux2010_i686.whl
9aa2656bab43993cc99f9cd996c71997  numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl
bcd1e59d57515d2f7be107266cab4f00  numpy-1.19.5-cp37-cp37m-manylinux2014_aarch64.whl
4e87ab21f30016ea5b9a981e3ecd733a  numpy-1.19.5-cp37-cp37m-win32.whl
c50b11de3b82163e6e75d17762368425  numpy-1.19.5-cp37-cp37m-win_amd64.whl
2beca0d3718c5b355f3c78d9f4f1fe87  numpy-1.19.5-cp38-cp38-macosx_10_9_x86_64.whl
8302aaa77a0978df894f9f62caac7ee7  numpy-1.19.5-cp38-cp38-manylinux1_i686.whl
6875515a35558ac17d3cdc8e8578debd  numpy-1.19.5-cp38-cp38-manylinux1_x86_64.whl
2c72ca182bc4b4904b6c87f7d4312036  numpy-1.19.5-cp38-cp38-manylinux2010_i686.whl
1b334aad7bdfa96dc3eb10f55f8c44dd  numpy-1.19.5-cp38-cp38-manylinux2010_x86_64.whl
f4e63f368fc230f482205e3b65b8f5c7  numpy-1.19.5-cp38-cp38-manylinux2014_aarch64.whl
d5a97ef684d53b04bf14e0b6cca7e8a1  numpy-1.19.5-cp38-cp38-win32.whl
abed55a50177d54a10d8e89ccde971ca  numpy-1.19.5-cp38-cp38-win_amd64.whl
3c3fc07aeb311677975a58d1ab1f3e5e  numpy-1.19.5-cp39-cp39-macosx_10_9_x86_64.whl
c7c070e284f49f9915ecbcec847760a5  numpy-1.19.5-cp39-cp39-manylinux1_i686.whl
2613261149a32771243bb71f53e3bc3a  numpy-1.19.5-cp39-cp39-manylinux1_x86_64.whl
5f84721a5e286e383bf6ba251c8add31  numpy-1.19.5-cp39-cp39-manylinux2010_i686.whl
9a0ac6f630de2081302df9bbffe1b555  numpy-1.19.5-cp39-cp39-manylinux2010_x86_64.whl
b48e31d316e4803b5e463dd5e38c8339  numpy-1.19.5-cp39-cp39-manylinux2014_aarch64.whl
15589af64e734aa1ecc7e04767ccc63d  numpy-1.19.5-cp39-cp39-win32.whl
cca2b2301f11a89329727ea5302d9b12  numpy-1.19.5-cp39-cp39-win_amd64.whl
c9b5c30dc035aa7bd9c1ebf6771939c3  numpy-1.19.5-pp36-pypy36_pp73-manylinux2010_x86_64.whl
e67564b7dfedf213fda112ee078c67bf  numpy-1.19.5.tar.gz
f6a1b48717c552bbc18f1adc3cc1fe0e  numpy-1.19.5.zip

SHA256

cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff  numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl
aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea  numpy-1.19.5-cp36-cp36m-manylinux1_i686.whl
8b5e972b43c8fc27d56550b4120fe6257fdc15f9301914380b27f74856299fea  numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl
43d4c81d5ffdff6bae58d66a3cd7f54a7acd9a0e7b18d97abb255defc09e3140  numpy-1.19.5-cp36-cp36m-manylinux2010_i686.whl
a4646724fba402aa7504cd48b4b50e783296b5e10a524c7a6da62e4a8ac9698d  numpy-1.19.5-cp36-cp36m-manylinux2010_x86_64.whl
2e55195bc1c6b705bfd8ad6f288b38b11b1af32f3c8289d6c50d47f950c12e76  numpy-1.19.5-cp36-cp36m-manylinux2014_aarch64.whl
39b70c19ec771805081578cc936bbe95336798b7edf4732ed102e7a43ec5c07a  numpy-1.19.5-cp36-cp36m-win32.whl
dbd18bcf4889b720ba13a27ec2f2aac1981bd41203b3a3b27ba7a33f88ae4827  numpy-1.19.5-cp36-cp36m-win_amd64.whl
603aa0706be710eea8884af807b1b3bc9fb2e49b9f4da439e76000f3b3c6ff0f  numpy-1.19.5-cp37-cp37m-macosx_10_9_x86_64.whl
cae865b1cae1ec2663d8ea56ef6ff185bad091a5e33ebbadd98de2cfa3fa668f  numpy-1.19.5-cp37-cp37m-manylinux1_i686.whl
36674959eed6957e61f11c912f71e78857a8d0604171dfd9ce9ad5cbf41c511c  numpy-1.19.5-cp37-cp37m-manylinux1_x86_64.whl
06fab248a088e439402141ea04f0fffb203723148f6ee791e9c75b3e9e82f080  numpy-1.19.5-cp37-cp37m-manylinux2010_i686.whl
6149a185cece5ee78d1d196938b2a8f9d09f5a5ebfbba66969302a778d5ddd1d  numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl
50a4a0ad0111cc1b71fa32dedd05fa239f7fb5a43a40663269bb5dc7877cfd28  numpy-1.19.5-cp37-cp37m-manylinux2014_aarch64.whl
d051ec1c64b85ecc69531e1137bb9751c6830772ee5c1c426dbcfe98ef5788d7  numpy-1.19.5-cp37-cp37m-win32.whl
a12ff4c8ddfee61f90a1633a4c4afd3f7bcb32b11c52026c92a12e1325922d0d  numpy-1.19.5-cp37-cp37m-win_amd64.whl
cf2402002d3d9f91c8b01e66fbb436a4ed01c6498fffed0e4c7566da1d40ee1e  numpy-1.19.5-cp38-cp38-macosx_10_9_x86_64.whl
1ded4fce9cfaaf24e7a0ab51b7a87be9038ea1ace7f34b841fe3b6894c721d1c  numpy-1.19.5-cp38-cp38-manylinux1_i686.whl
012426a41bc9ab63bb158635aecccc7610e3eff5d31d1eb43bc099debc979d94  numpy-1.19.5-cp38-cp38-manylinux1_x86_64.whl
759e4095edc3c1b3ac031f34d9459fa781777a93ccc633a472a5468587a190ff  numpy-1.19.5-cp38-cp38-manylinux2010_i686.whl
a9d17f2be3b427fbb2bce61e596cf555d6f8a56c222bd2ca148baeeb5e5c783c  numpy-1.19.5-cp38-cp38-manylinux2010_x86_64.whl
99abf4f353c3d1a0c7a5f27699482c987cf663b1eac20db59b8c7b061eabd7fc  numpy-1.19.5-cp38-cp38-manylinux2014_aarch64.whl
384ec0463d1c2671170901994aeb6dce126de0a95ccc3976c43b0038a37329c2  numpy-1.19.5-cp38-cp38-win32.whl
811daee36a58dc79cf3d8bdd4a490e4277d0e4b7d103a001a4e73ddb48e7e6aa  numpy-1.19.5-cp38-cp38-win_amd64.whl
c843b3f50d1ab7361ca4f0b3639bf691569493a56808a0b0c54a051d260b7dbd  numpy-1.19.5-cp39-cp39-macosx_10_9_x86_64.whl
d6631f2e867676b13026e2846180e2c13c1e11289d67da08d71cacb2cd93d4aa  numpy-1.19.5-cp39-cp39-manylinux1_i686.whl
7fb43004bce0ca31d8f13a6eb5e943fa73371381e53f7074ed21a4cb786c32f8  numpy-1.19.5-cp39-cp39-manylinux1_x86_64.whl
2ea52bd92ab9f768cc64a4c3ef8f4b2580a17af0a5436f6126b08efbd1838371  numpy-1.19.5-cp39-cp39-manylinux2010_i686.whl
400580cbd3cff6ffa6293df2278c75aef2d58d8d93d3c5614cd67981dae68ceb  numpy-1.19.5-cp39-cp39-manylinux2010_x86_64.whl
df609c82f18c5b9f6cb97271f03315ff0dbe481a2a02e56aeb1b1a985ce38e60  numpy-1.19.5-cp39-cp39-manylinux2014_aarch64.whl
ab83f24d5c52d60dbc8cd0528759532736b56db58adaa7b5f1f76ad551416a1e  numpy-1.19.5-cp39-cp39-win32.whl
0eef32ca3132a48e43f6a0f5a82cb508f22ce5a3d6f67a8329c81c8e226d3f6e  numpy-1.19.5-cp39-cp39-win_amd64.whl
a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73  numpy-1.19.5-pp36-pypy36_pp73-manylinux2010_x86_64.whl
d1654047d75fb9d55cc3d46f312d5247eec5f4999039874d2f571bb8021d8f0b  numpy-1.19.5.tar.gz
a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4  numpy-1.19.5.zip
numpy -

Published by charris almost 4 years ago

NumPy 1.20.0 Release Notes

This NumPy release is the largest so made to date, some 670 PRs
contributed by 184 people have been merged. See the list of highlights
below for more details. The Python versions supported for this release
are 3.7-3.9, support for Python 3.6 has been dropped. Highlights are

  • Annotations for NumPy functions. This work is ongoing and
    improvements can be expected pending feedback from users.
  • Wider use of SIMD to increase execution speed of ufuncs. Much work
    has been done in introducing universal functions that will ease use
    of modern features across different hardware platforms. This work is
    ongoing.
  • Preliminary work in changing the dtype and casting implementations
    in order to provide an easier path to extending dtypes. This work is
    ongoing but enough has been done to allow experimentation and
    feedback.
  • Extensive documentation improvements comprising some 185 PR merges.
    This work is ongoing and part of the larger project to improve
    NumPy's online presence and usefulness to new users.
  • Further cleanups related to removing Python 2.7. This improves code
    readability and removes technical debt.
  • Preliminary support for the upcoming Cython 3.0.

New functions

The random.Generator class has a new permuted function.

The new function differs from shuffle and permutation in that the
subarrays indexed by an axis are permuted rather than the axis being
treated as a separate 1-D array for every combination of the other
indexes. For example, it is now possible to permute the rows or columns
of a 2-D array.

(gh-15121)

sliding_window_view provides a sliding window view for numpy arrays

[numpy.lib.stride_tricks.sliding_window_view]{.title-ref} constructs
views on numpy arrays that offer a sliding or moving window access to
the array. This allows for the simple implementation of certain
algorithms, such as running means.

(gh-17394)

[numpy.broadcast_shapes]{.title-ref} is a new user-facing function

[~numpy.broadcast_shapes]{.title-ref} gets the resulting shape from
broadcasting the given shape tuples against each other.

>>> np.broadcast_shapes((1, 2), (3, 1))
(3, 2)

>>> np.broadcast_shapes(2, (3, 1))
(3, 2)

>>> np.broadcast_shapes((6, 7), (5, 6, 1), (7,), (5, 1, 7))
(5, 6, 7)

(gh-17535)

Deprecations

Using the aliases of builtin types like np.int is deprecated

For a long time, np.int has been an alias of the builtin int. This
is repeatedly a cause of confusion for newcomers, and is also simply not
useful.

These aliases have been deprecated. The table below shows the full list
of deprecated aliases, along with their exact meaning. Replacing uses of
items in the first column with the contents of the second column will
work identically and silence the deprecation warning.

In many cases, it may have been intended to use the types from the third
column. Be aware that use of these types may result in subtle but
desirable behavior changes.

Deprecated name Identical to Possibly intended numpy type


numpy.bool bool [numpy.bool_]{.title-ref}
numpy.int int [numpy.int_]{.title-ref} (default int dtype), [numpy.cint]{.title-ref} (C int)
numpy.float float [numpy.float_]{.title-ref}, [numpy.double]{.title-ref} (equivalent)
numpy.complex complex [numpy.complex_]{.title-ref}, [numpy.cdouble]{.title-ref} (equivalent)
numpy.object object [numpy.object_]{.title-ref}
numpy.str str [numpy.str_]{.title-ref}
numpy.long int (long on Python 2) [numpy.int_]{.title-ref} (C long), [numpy.longlong]{.title-ref} (largest integer type)
numpy.unicode str (unicode on Python 2) [numpy.unicode_]{.title-ref}

Note that for technical reasons these deprecation warnings will only be
emitted on Python 3.7 and above.

(gh-14882)

Passing shape=None to functions with a non-optional shape argument is deprecated

Previously, this was an alias for passing shape=(). This deprecation
is emitted by [PyArray_IntpConverter]{.title-ref} in the C API. If your
API is intended to support passing None, then you should check for
None prior to invoking the converter, so as to be able to distinguish
None and ().

(gh-15886)

Indexing errors will be reported even when index result is empty

In the future, NumPy will raise an IndexError when an integer array
index contains out of bound values even if a non-indexed dimension is of
length 0. This will now emit a DeprecationWarning. This can happen when
the array is previously empty, or an empty slice is involved:

arr1 = np.zeros((5, 0))
arr1[[20]]
arr2 = np.zeros((5, 5))
arr2[[20], :0]

Previously the non-empty index [20] was not checked for correctness.
It will now be checked causing a deprecation warning which will be
turned into an error. This also applies to assignments.

(gh-15900)

Inexact matches for mode and searchside are deprecated

Inexact and case insensitive matches for mode and searchside were
valid inputs earlier and will give a DeprecationWarning now. For
example, below are some example usages which are now deprecated and will
give a DeprecationWarning:

import numpy as np
arr = np.array([[3, 6, 6], [4, 5, 1]])
# mode: inexact match
np.ravel_multi_index(arr, (7, 6), mode="clap")  # should be "clip"
# searchside: inexact match
np.searchsorted(arr[0], 4, side='random')  # should be "right"

(gh-16056)

Deprecation of [numpy.dual]{.title-ref}

The module [numpy.dual]{.title-ref} is deprecated. Instead of importing
functions from [numpy.dual]{.title-ref}, the functions should be
imported directly from NumPy or SciPy.

(gh-16156)

outer and ufunc.outer deprecated for matrix

np.matrix use with [~numpy.outer]{.title-ref} or generic ufunc outer
calls such as numpy.add.outer. Previously, matrix was converted to an
array here. This will not be done in the future requiring a manual
conversion to arrays.

(gh-16232)

Further Numeric Style types Deprecated

The remaining numeric-style type codes Bytes0, Str0, Uint32,
Uint64, and Datetime64 have been deprecated. The lower-case variants
should be used instead. For bytes and string "S" and "U" are further
alternatives.

(gh-16554)

The ndincr method of ndindex is deprecated

The documentation has warned against using this function since NumPy
1.8. Use next(it) instead of it.ndincr().

(gh-17233)

ArrayLike objects which do not define __len__ and __getitem__

Objects which define one of the protocols __array__,
__array_interface__, or __array_struct__ but are not sequences
(usually defined by having a __len__ and __getitem__) will behave
differently during array-coercion in the future.

When nested inside sequences, such as np.array([array_like]), these
were handled as a single Python object rather than an array. In the
future they will behave identically to:

np.array([np.array(array_like)])

This change should only have an effect if np.array(array_like) is not
0-D. The solution to this warning may depend on the object:

  • Some array-likes may expect the new behaviour, and users can ignore
    the warning. The object can choose to expose the sequence protocol
    to opt-in to the new behaviour.
  • For example, shapely will allow conversion to an array-like using
    line.coords rather than np.asarray(line). Users may work around
    the warning, or use the new convention when it becomes available.

Unfortunately, using the new behaviour can only be achieved by calling
np.array(array_like).

If you wish to ensure that the old behaviour remains unchanged, please
create an object array and then fill it explicitly, for example:

arr = np.empty(3, dtype=object)
arr[:] = [array_like1, array_like2, array_like3]

This will ensure NumPy knows to not enter the array-like and use it as a
object instead.

(gh-17973)

Future Changes

Arrays cannot be using subarray dtypes

Array creation and casting using np.array(arr, dtype) and
arr.astype(dtype) will use different logic when dtype is a subarray
dtype such as np.dtype("(2)i,").

For such a dtype the following behaviour is true:

res = np.array(arr, dtype)

res.dtype is not dtype
res.dtype is dtype.base
res.shape == arr.shape + dtype.shape

But res is filled using the logic:

res = np.empty(arr.shape + dtype.shape, dtype=dtype.base)
res[...] = arr

which uses incorrect broadcasting (and often leads to an error). In the
future, this will instead cast each element individually, leading to the
same result as:

res = np.array(arr, dtype=np.dtype(["f", dtype]))["f"]

Which can normally be used to opt-in to the new behaviour.

This change does not affect np.array(list, dtype="(2)i,") unless the
list itself includes at least one array. In particular, the behaviour
is unchanged for a list of tuples.

(gh-17596)

Expired deprecations

  • The deprecation of numeric style type-codes np.dtype("Complex64")
    (with upper case spelling), is expired. "Complex64" corresponded
    to "complex128" and "Complex32" corresponded to "complex64".

  • The deprecation of np.sctypeNA and np.typeNA is expired. Both
    have been removed from the public API. Use np.typeDict instead.

    (gh-16554)

  • The 14-year deprecation of np.ctypeslib.ctypes_load_library is
    expired. Use ~numpy.ctypeslib.load_library{.interpreted-text
    role="func"} instead, which is identical.

    (gh-17116)

Financial functions removed

In accordance with NEP 32, the financial functions are removed from
NumPy 1.20. The functions that have been removed are fv, ipmt,
irr, mirr, nper, npv, pmt, ppmt, pv, and rate. These
functions are available in the
numpy_financial library.

(gh-17067)

Compatibility notes

isinstance(dtype, np.dtype) and not type(dtype) is not np.dtype

NumPy dtypes are not direct instances of np.dtype anymore. Code that
may have used type(dtype) is np.dtype will always return False and
must be updated to use the correct version
isinstance(dtype, np.dtype).

This change also affects the C-side macro PyArray_DescrCheck if
compiled against a NumPy older than 1.16.6. If code uses this macro and
wishes to compile against an older version of NumPy, it must replace the
macro (see also C API changes section).

Same kind casting in concatenate with axis=None

When [~numpy.concatenate]{.title-ref} is called with axis=None, the
flattened arrays were cast with unsafe. Any other axis choice uses
"same kind". That different default has been deprecated and "same
kind" casting will be used instead. The new casting keyword argument
can be used to retain the old behaviour.

(gh-16134)

NumPy Scalars are cast when assigned to arrays

When creating or assigning to arrays, in all relevant cases NumPy
scalars will now be cast identically to NumPy arrays. In particular this
changes the behaviour in some cases which previously raised an error:

np.array([np.float64(np.nan)], dtype=np.int64)

will succeed and return an undefined result (usually the smallest
possible integer). This also affects assignments:

arr[0] = np.float64(np.nan)

At this time, NumPy retains the behaviour for:

np.array(np.float64(np.nan), dtype=np.int64)

The above changes do not affect Python scalars:

np.array([float("NaN")], dtype=np.int64)

remains unaffected (np.nan is a Python float, not a NumPy one).
Unlike signed integers, unsigned integers do not retain this special
case, since they always behaved more like casting. The following code
stops raising an error:

np.array([np.float64(np.nan)], dtype=np.uint64)

To avoid backward compatibility issues, at this time assignment from
datetime64 scalar to strings of too short length remains supported.
This means that np.asarray(np.datetime64("2020-10-10"), dtype="S5")
succeeds now, when it failed before. In the long term this may be
deprecated or the unsafe cast may be allowed generally to make
assignment of arrays and scalars behave consistently.

Array coercion changes when Strings and other types are mixed

When strings and other types are mixed, such as:

np.array(["string", np.float64(3.)], dtype="S")

The results will change, which may lead to string dtypes with longer
strings in some cases. In particularly, if dtype="S" is not provided
any numerical value will lead to a string results long enough to hold
all possible numerical values. (e.g. "S32" for floats). Note that you
should always provide dtype="S" when converting non-strings to
strings.

If dtype="S" is provided the results will be largely identical to
before, but NumPy scalars (not a Python float like 1.0), will still
enforce a uniform string length:

np.array([np.float64(3.)], dtype="S")  # gives "S32"
np.array([3.0], dtype="S")  # gives "S3"

Previously the first version gave the same result as the second.

Array coercion restructure

Array coercion has been restructured. In general, this should not affect
users. In extremely rare corner cases where array-likes are nested:

np.array([array_like1])

Things will now be more consistent with:

np.array([np.array(array_like1)])

This can subtly change output for some badly defined array-likes. One
example for this are array-like objects which are not also sequences of
matching shape. In NumPy 1.20, a warning will be given when an
array-like is not also a sequence (but behaviour remains identical, see
deprecations). If an array like is also a sequence (defines
__getitem__ and __len__) NumPy will now only use the result given by
__array__, __array_interface__, or __array_struct__. This will
result in differences when the (nested) sequence describes a different
shape.

(gh-16200)

Writing to the result of [numpy.broadcast_arrays]{.title-ref} will export readonly buffers

In NumPy 1.17 [numpy.broadcast_arrays]{.title-ref} started warning when
the resulting array was written to. This warning was skipped when the
array was used through the buffer interface (e.g. memoryview(arr)).
The same thing will now occur for the two protocols
__array_interface__, and __array_struct__ returning read-only
buffers instead of giving a warning.

(gh-16350)

Numeric-style type names have been removed from type dictionaries

To stay in sync with the deprecation for np.dtype("Complex64") and
other numeric-style (capital case) types. These were removed from
np.sctypeDict and np.typeDict. You should use the lower case
versions instead. Note that "Complex64" corresponds to "complex128"
and "Complex32" corresponds to "complex64". The numpy style (new)
versions, denote the full size and not the size of the real/imaginary
part.

(gh-16554)

The operator.concat function now raises TypeError for array arguments

The previous behavior was to fall back to addition and add the two
arrays, which was thought to be unexpected behavior for a concatenation
function.

(gh-16570)

nickname attribute removed from ABCPolyBase

An abstract property nickname has been removed from ABCPolyBase as
it was no longer used in the derived convenience classes. This may
affect users who have derived classes from ABCPolyBase and overridden
the methods for representation and display, e.g. __str__, __repr__,
_repr_latex, etc.

(gh-16589)

float->timedelta and uint64->timedelta promotion will raise a TypeError

Float and timedelta promotion consistently raises a TypeError.
np.promote_types("float32", "m8") aligns with
np.promote_types("m8", "float32") now and both raise a TypeError.
Previously, np.promote_types("float32", "m8") returned "m8" which
was considered a bug.

Uint64 and timedelta promotion consistently raises a TypeError.
np.promote_types("uint64", "m8") aligns with
np.promote_types("m8", "uint64") now and both raise a TypeError.
Previously, np.promote_types("uint64", "m8") returned "m8" which was
considered a bug.

(gh-16592)

numpy.genfromtxt now correctly unpacks structured arrays

Previously, [numpy.genfromtxt]{.title-ref} failed to unpack if it was
called with unpack=True and a structured datatype was passed to the
dtype argument (or dtype=None was passed and a structured datatype
was inferred). For example:

>>> data = StringIO("21 58.0\n35 72.0")
>>> np.genfromtxt(data, dtype=None, unpack=True)
array([(21, 58.), (35, 72.)], dtype=[('f0', '<i8'), ('f1', '<f8')])

Structured arrays will now correctly unpack into a list of arrays, one
for each column:

>>> np.genfromtxt(data, dtype=None, unpack=True)
[array([21, 35]), array([58., 72.])]

(gh-16650)

mgrid, r_, etc. consistently return correct outputs for non-default precision input

Previously,
np.mgrid[np.float32(0.1):np.float32(0.35):np.float32(0.1),] and
np.r_[0:10:np.complex64(3j)] failed to return meaningful output. This
bug potentially affects [~numpy.mgrid]{.title-ref},
[~numpy.ogrid]{.title-ref}, [~numpy.r_]{.title-ref}, and
[~numpy.c_]{.title-ref} when an input with dtype other than the
default float64 and complex128 and equivalent Python types were
used. The methods have been fixed to handle varying precision correctly.

(gh-16815)

Boolean array indices with mismatching shapes now properly give IndexError

Previously, if a boolean array index matched the size of the indexed
array but not the shape, it was incorrectly allowed in some cases. In
other cases, it gave an error, but the error was incorrectly a
ValueError with a message about broadcasting instead of the correct
IndexError.

For example, the following used to incorrectly give
ValueError: operands could not be broadcast together with shapes (2,2) (1,4):

np.empty((2, 2))[np.array([[True, False, False, False]])]

And the following used to incorrectly return array([], dtype=float64):

np.empty((2, 2))[np.array([[False, False, False, False]])]

Both now correctly give
IndexError: boolean index did not match indexed array along dimension 0; dimension is 2 but corresponding boolean dimension is 1.

(gh-17010)

Casting errors interrupt Iteration

When iterating while casting values, an error may stop the iteration
earlier than before. In any case, a failed casting operation always
returned undefined, partial results. Those may now be even more
undefined and partial. For users of the NpyIter C-API such cast errors
will now cause the [iternext()]{.title-ref} function to return 0 and
thus abort iteration. Currently, there is no API to detect such an error
directly. It is necessary to check PyErr_Occurred(), which may be
problematic in combination with NpyIter_Reset. These issues always
existed, but new API could be added if required by users.

(gh-17029)

f2py generated code may return unicode instead of byte strings

Some byte strings previously returned by f2py generated code may now be
unicode strings. This results from the ongoing Python2 -> Python3
cleanup.

(gh-17068)

The first element of the __array_interface__["data"] tuple must be an integer

This has been the documented interface for many years, but there was
still code that would accept a byte string representation of the pointer
address. That code has been removed, passing the address as a byte
string will now raise an error.

(gh-17241)

poly1d respects the dtype of all-zero argument

Previously, constructing an instance of poly1d with all-zero
coefficients would cast the coefficients to np.float64. This affected
the output dtype of methods which construct poly1d instances
internally, such as np.polymul.

(gh-17577)

The numpy.i file for swig is Python 3 only.

Uses of Python 2.7 C-API functions have been updated to Python 3 only.
Users who need the old version should take it from an older version of
NumPy.

(gh-17580)

Void dtype discovery in np.array

In calls using np.array(..., dtype="V"), arr.astype("V"), and
similar a TypeError will now be correctly raised unless all elements
have the identical void length. An example for this is:

np.array([b"1", b"12"], dtype="V")

Which previously returned an array with dtype "V2" which cannot
represent b"1" faithfully.

(gh-17706)

C API changes

The PyArray_DescrCheck macro is modified

The PyArray_DescrCheck macro has been updated since NumPy 1.16.6 to
be:

#define PyArray_DescrCheck(op) PyObject_TypeCheck(op, &PyArrayDescr_Type)

Starting with NumPy 1.20 code that is compiled against an earlier
version will be API incompatible with NumPy 1.20. The fix is to either
compile against 1.16.6 (if the NumPy 1.16 release is the oldest release
you wish to support), or manually inline the macro by replacing it with
the new definition:

PyObject_TypeCheck(op, &PyArrayDescr_Type)

which is compatible with all NumPy versions.

Size of np.ndarray and np.void_ changed

The size of the PyArrayObject and PyVoidScalarObject structures have
changed. The following header definition has been removed:

#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))

since the size must not be considered a compile time constant: it will
change for different runtime versions of NumPy.

The most likely relevant use are potential subclasses written in C which
will have to be recompiled and should be updated. Please see the
documentation for :cPyArrayObject{.interpreted-text role="type"} for
more details and contact the NumPy developers if you are affected by
this change.

NumPy will attempt to give a graceful error but a program expecting a
fixed structure size may have undefined behaviour and likely crash.

(gh-16938)

New Features

where keyword argument for numpy.all and numpy.any functions

The keyword argument where is added and allows to only consider
specified elements or subaxes from an array in the Boolean evaluation of
all and any. This new keyword is available to the functions all
and any both via numpy directly or in the methods of
numpy.ndarray.

Any broadcastable Boolean array or a scalar can be set as where. It
defaults to True to evaluate the functions for all elements in an
array if where is not set by the user. Examples are given in the
documentation of the functions.

where keyword argument for numpy functions mean, std, var

The keyword argument where is added and allows to limit the scope in
the calculation of mean, std and var to only a subset of elements.
It is available both via numpy directly or in the methods of
numpy.ndarray.

Any broadcastable Boolean array or a scalar can be set as where. It
defaults to True to evaluate the functions for all elements in an
array if where is not set by the user. Examples are given in the
documentation of the functions.

(gh-15852)

norm=backward, forward keyword options for numpy.fft functions

The keyword argument option norm=backward is added as an alias for
None and acts as the default option; using it has the direct
transforms unscaled and the inverse transforms scaled by 1/n.

Using the new keyword argument option norm=forward has the direct
transforms scaled by 1/n and the inverse transforms unscaled (i.e.
exactly opposite to the default option norm=backward).

(gh-16476)

NumPy is now typed

Type annotations have been added for large parts of NumPy. There is also
a new [numpy.typing]{.title-ref} module that contains useful types for
end-users. The currently available types are

  • ArrayLike: for objects that can be coerced to an array
  • DtypeLike: for objects that can be coerced to a dtype

(gh-16515)

numpy.typing is accessible at runtime

The types in numpy.typing can now be imported at runtime. Code like
the following will now work:

from numpy.typing import ArrayLike
x: ArrayLike = [1, 2, 3, 4]

(gh-16558)

New __f2py_numpy_version__ attribute for f2py generated modules.

Because f2py is released together with NumPy, __f2py_numpy_version__
provides a way to track the version f2py used to generate the module.

(gh-16594)

mypy tests can be run via runtests.py

Currently running mypy with the NumPy stubs configured requires either:

  • Installing NumPy
  • Adding the source directory to MYPYPATH and linking to the
    mypy.ini

Both options are somewhat inconvenient, so add a --mypy option to
runtests that handles setting things up for you. This will also be
useful in the future for any typing codegen since it will ensure the
project is built before type checking.

(gh-17123)

Negation of user defined BLAS/LAPACK detection order

[~numpy.distutils]{.title-ref} allows negation of libraries when
determining BLAS/LAPACK libraries. This may be used to remove an item
from the library resolution phase, i.e. to disallow NetLIB libraries one
could do:

NPY_BLAS_ORDER='^blas' NPY_LAPACK_ORDER='^lapack' python setup.py build

That will use any of the accelerated libraries instead.

(gh-17219)

Allow passing optimizations arguments to asv build

It is now possible to pass -j, --cpu-baseline, --cpu-dispatch and
--disable-optimization flags to ASV build when the --bench-compare
argument is used.

(gh-17284)

The NVIDIA HPC SDK nvfortran compiler is now supported

Support for the nvfortran compiler, a version of pgfortran, has been
added.

(gh-17344)

dtype option for cov and corrcoef

The dtype option is now available for [numpy.cov]{.title-ref} and
[numpy.corrcoef]{.title-ref}. It specifies which data-type the returned
result should have. By default the functions still return a
[numpy.float64]{.title-ref} result.

(gh-17456)

Improvements

Improved string representation for polynomials (__str__)

The string representation (__str__) of all six polynomial types in
[numpy.polynomial]{.title-ref} has been updated to give the polynomial
as a mathematical expression instead of an array of coefficients. Two
package-wide formats for the polynomial expressions are available - one
using Unicode characters for superscripts and subscripts, and another
using only ASCII characters.

(gh-15666)

Remove the Accelerate library as a candidate LAPACK library

Apple no longer supports Accelerate. Remove it.

(gh-15759)

Object arrays containing multi-line objects have a more readable repr

If elements of an object array have a repr containing new lines, then
the wrapped lines will be aligned by column. Notably, this improves the
repr of nested arrays:

>>> np.array([np.eye(2), np.eye(3)], dtype=object)
array([array([[1., 0.],
              [0., 1.]]),
       array([[1., 0., 0.],
              [0., 1., 0.],
              [0., 0., 1.]])], dtype=object)

(gh-15997)

Concatenate supports providing an output dtype

Support was added to [~numpy.concatenate]{.title-ref} to provide an
output dtype and casting using keyword arguments. The dtype
argument cannot be provided in conjunction with the out one.

(gh-16134)

Thread safe f2py callback functions

Callback functions in f2py are now thread safe.

(gh-16519)

[numpy.core.records.fromfile]{.title-ref} now supports file-like objects

[numpy.rec.fromfile]{.title-ref} can now use file-like objects, for
instance :pyio.BytesIO{.interpreted-text role="class"}

(gh-16675)

RPATH support on AIX added to distutils

This allows SciPy to be built on AIX.

(gh-16710)

Use f90 compiler specified by the command line args

The compiler command selection for Fortran Portland Group Compiler is
changed in [numpy.distutils.fcompiler]{.title-ref}. This only affects
the linking command. This forces the use of the executable provided by
the command line option (if provided) instead of the pgfortran
executable. If no executable is provided to the command line option it
defaults to the pgf90 executable, wich is an alias for pgfortran
according to the PGI documentation.

(gh-16730)

Add NumPy declarations for Cython 3.0 and later

The pxd declarations for Cython 3.0 were improved to avoid using
deprecated NumPy C-API features. Extension modules built with Cython
3.0+ that use NumPy can now set the C macro
NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION to avoid C compiler warnings
about deprecated API usage.

(gh-16986)

Make the window functions exactly symmetric

Make sure the window functions provided by NumPy are symmetric. There
were previously small deviations from symmetry due to numerical
precision that are now avoided by better arrangement of the computation.

(gh-17195)

Performance improvements and changes

Enable multi-platform SIMD compiler optimizations

A series of improvements for NumPy infrastructure to pave the way to
NEP-38, that can be summarized as follow:

  • New Build Arguments

    • --cpu-baseline to specify the minimal set of required
      optimizations, default value is min which provides the minimum
      CPU features that can safely run on a wide range of users
      platforms.
    • --cpu-dispatch to specify the dispatched set of additional
      optimizations, default value is max -xop -fma4 which enables
      all CPU features, except for AMD legacy features.
    • --disable-optimization to explicitly disable the whole new
      improvements, It also adds a new C compiler #definition
      called NPY_DISABLE_OPTIMIZATION which it can be used as guard
      for any SIMD code.
  • Advanced CPU dispatcher

    A flexible cross-architecture CPU dispatcher built on the top of
    Python/Numpy distutils, support all common compilers with a wide
    range of CPU features.

    The new dispatcher requires a special file extension *.dispatch.c
    to mark the dispatch-able C sources. These sources have the
    ability to be compiled multiple times so that each compilation
    process represents certain CPU features and provides different
    #definitions and flags that affect the code paths.

  • New auto-generated C header
    ``core/src/common/_cpu_dispatch.h``

    This header is generated by the distutils module ccompiler_opt,
    and contains all the #definitions and headers of instruction sets,
    that had been configured through command arguments
    '--cpu-baseline' and '--cpu-dispatch'.

  • New C header ``core/src/common/npy_cpu_dispatch.h``

    This header contains all utilities that required for the whole CPU
    dispatching process, it also can be considered as a bridge linking
    the new infrastructure work with NumPy CPU runtime detection.

  • Add new attributes to NumPy umath module(Python level)

    • __cpu_baseline__ a list contains the minimal set of required
      optimizations that supported by the compiler and platform
      according to the specified values to command argument
      '--cpu-baseline'.
    • __cpu_dispatch__ a list contains the dispatched set of
      additional optimizations that supported by the compiler and
      platform according to the specified values to command argument
      '--cpu-dispatch'.
  • Print the supported CPU features during the run of PytestTester

(gh-13516)

Changes

Changed behavior of divmod(1., 0.) and related functions

The changes also assure that different compiler versions have the same
behavior for nan or inf usages in these operations. This was previously
compiler dependent, we now force the invalid and divide by zero flags,
making the results the same across compilers. For example, gcc-5, gcc-8,
or gcc-9 now result in the same behavior. The changes are tabulated
below:

Operator Old Warning New Warning Old Result New Result Works on MacOS


np.divmod(1.0, 0.0) Invalid Invalid and Dividebyzero nan, nan inf, nan Yes
np.fmod(1.0, 0.0) Invalid Invalid nan nan No? Yes
np.floor_divide(1.0, 0.0) Invalid Dividebyzero nan inf Yes
np.remainder(1.0, 0.0) Invalid Invalid nan nan Yes

: Summary of New Behavior

(gh-16161)

np.linspace on integers now uses floor

When using a int dtype in [numpy.linspace]{.title-ref}, previously
float values would be rounded towards zero. Now
[numpy.floor]{.title-ref} is used instead, which rounds toward -inf.
This changes the results for negative values. For example, the following
would previously give:

>>> np.linspace(-3, 1, 8, dtype=int)
array([-3, -2, -1, -1,  0,  0,  0,  1])

and now results in:

>>> np.linspace(-3, 1, 8, dtype=int)
array([-3, -3, -2, -2, -1, -1,  0,  1])

The former result can still be obtained with:

>>> np.linspace(-3, 1, 8).astype(int)
array([-3, -2, -1, -1,  0,  0,  0,  1])

(gh-16841)

Checksums

MD5

499835b2483fe8edd6d8322c39f30d11  numpy-1.20.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
b3d6a171b2653a8171a4afb9a302091a  numpy-1.20.0rc2-cp37-cp37m-manylinux1_i686.whl
79103a7a6b134a0a778b6f683f3e0925  numpy-1.20.0rc2-cp37-cp37m-manylinux1_x86_64.whl
b931f6e4458d9cb5b000e8a68866c186  numpy-1.20.0rc2-cp37-cp37m-manylinux2010_i686.whl
228f9c1f967ce8a3ac7d6a55e2a62432  numpy-1.20.0rc2-cp37-cp37m-manylinux2010_x86_64.whl
7a8968a7bc381c65d2949de8b67f8172  numpy-1.20.0rc2-cp37-cp37m-manylinux2014_aarch64.whl
90407a37d08075640fec35e68af9c5e3  numpy-1.20.0rc2-cp37-cp37m-win32.whl
24190d9877903a881b76d5c4e7beef98  numpy-1.20.0rc2-cp37-cp37m-win_amd64.whl
1f5f75aa91a0c92b2c0ad1f0cf6f1fd5  numpy-1.20.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
e0ba28cbfa6ffd19c9da9520c7552b30  numpy-1.20.0rc2-cp38-cp38-manylinux1_i686.whl
b5e51332c783437c689aaa2419050d66  numpy-1.20.0rc2-cp38-cp38-manylinux1_x86_64.whl
ba167ede82708365f8591082acc14097  numpy-1.20.0rc2-cp38-cp38-manylinux2010_i686.whl
dd7d41065dfbe0a2376416eb3304ea7e  numpy-1.20.0rc2-cp38-cp38-manylinux2010_x86_64.whl
eb7d31baa890fae925aeb17c751b021a  numpy-1.20.0rc2-cp38-cp38-manylinux2014_aarch64.whl
442a1c1b06cdb115e88107477fdcc038  numpy-1.20.0rc2-cp38-cp38-win32.whl
34d1f567b65eb281ec79d4f582667865  numpy-1.20.0rc2-cp38-cp38-win_amd64.whl
b1f8dfa6991b23b836bcd1f0834c839e  numpy-1.20.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
868005badd253d532c149297d69761a0  numpy-1.20.0rc2-cp39-cp39-manylinux2010_i686.whl
5205110ebbae1e65f316ae49d99d8b97  numpy-1.20.0rc2-cp39-cp39-manylinux2010_x86_64.whl
780a2b89cac827a5df39f6ebeba829f0  numpy-1.20.0rc2-cp39-cp39-manylinux2014_aarch64.whl
237574aa2bdc0bce559fbe6826441107  numpy-1.20.0rc2-cp39-cp39-win32.whl
fb9f403d6665530e502a23e8a047d734  numpy-1.20.0rc2-cp39-cp39-win_amd64.whl
78e1c2dca06f5a8f17e5aebe400c35b2  numpy-1.20.0rc2-pp37-pypy37_pp73-manylinux2010_x86_64.whl
bb7763397cd347d6d7338a3d8f8f4367  numpy-1.20.0rc2.tar.gz
176100b0ed46c6d7ed1e8cdd541679c3  numpy-1.20.0rc2.zip

SHA256

ab9bd6e3e8ce1ce62e3db02462df37ca708d24e8536c71857ad78e4e7d68b024  numpy-1.20.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
3526a1c1e2456c67fc5f2a67d27ffa42b1bdfc640b0e0d07652799a9259a5f89  numpy-1.20.0rc2-cp37-cp37m-manylinux1_i686.whl
e039cb9e37a651047cb164c7fa2760c502d9e216d24ddd50928e61a02039cb77  numpy-1.20.0rc2-cp37-cp37m-manylinux1_x86_64.whl
adfd6f6900af0c3d550d8d2c48e060f710f61b781eabc983f7f10c9b85a227ed  numpy-1.20.0rc2-cp37-cp37m-manylinux2010_i686.whl
73ab3ab1a34abfa4034b9d85be62c6f39c87b47232bf72c9c900ff67d92212b7  numpy-1.20.0rc2-cp37-cp37m-manylinux2010_x86_64.whl
747e2ecd3cf70159a969e267f434f03d949a740645ce74b42476ff33c2037d86  numpy-1.20.0rc2-cp37-cp37m-manylinux2014_aarch64.whl
ac6cd3bee3e2906102f62a9cdec6477d5c5933624ff21f02c2c7da5ace6d865a  numpy-1.20.0rc2-cp37-cp37m-win32.whl
0b2298db632958edd25e1edef5a24010bcb01752077b92567bb43c56fcf96578  numpy-1.20.0rc2-cp37-cp37m-win_amd64.whl
d15ce00b4e49fbf946541291bdfc7b673cd08137da8ff6492cd34aa6b612b8eb  numpy-1.20.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
f7f3fdaef950dc00bed782b78f970a9d7b496287c6c2494ead8ab98f38477bb0  numpy-1.20.0rc2-cp38-cp38-manylinux1_i686.whl
47e8f866e0342c98a36339264b03e534425d89b18721f1d06565976d31a01071  numpy-1.20.0rc2-cp38-cp38-manylinux1_x86_64.whl
cd4941e3a8dccc572c0f0ed02ab1c8c75d7c47091eccecf9173c92d10b8eeaf5  numpy-1.20.0rc2-cp38-cp38-manylinux2010_i686.whl
d239f8391667f2a4bf913d6bed7b9960ccfb76da5253d16de6553120b1ca393d  numpy-1.20.0rc2-cp38-cp38-manylinux2010_x86_64.whl
677d968f9e0d4640a143615780925fd18dba128ef2753e847a94989a51bf5715  numpy-1.20.0rc2-cp38-cp38-manylinux2014_aarch64.whl
faa99af9fbd914e33b8322efd04a13e23c6b032d1dc5cc62bf5294a2ce59212e  numpy-1.20.0rc2-cp38-cp38-win32.whl
5ab1a6bda6ded04fc1261bf0d7ef382e814afcd83e478b545dad2094d4f2798e  numpy-1.20.0rc2-cp38-cp38-win_amd64.whl
bd36b4e61b4b850bf45d6a079b4b6eb3937442a6c273d2bac1e4377f196632b9  numpy-1.20.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
d5740196e9cf6874108dc78995ef3e2bf2dd2e338e41b5a0083527d178364053  numpy-1.20.0rc2-cp39-cp39-manylinux2010_i686.whl
f45b9d4b1dea1c60339ab06503eaec6c6cb7b7bc66e9939c825544b385581a3b  numpy-1.20.0rc2-cp39-cp39-manylinux2010_x86_64.whl
9e0eb4674f9d6980125415fc1802b59fbc9eed32db0ff4689957710b7ee5b55a  numpy-1.20.0rc2-cp39-cp39-manylinux2014_aarch64.whl
06995885846f701bddeb7fa289dde6798e5613208bc7a74a7ae165cb3a043d97  numpy-1.20.0rc2-cp39-cp39-win32.whl
9a9ad522f98331668913675ecf611204c74173663edf87f323df7f873bf9d2f8  numpy-1.20.0rc2-cp39-cp39-win_amd64.whl
d8f20a52dd98f8e404c6825fc835934dba3ad71d90ced92069061025fb9c2598  numpy-1.20.0rc2-pp37-pypy37_pp73-manylinux2010_x86_64.whl
5c45808f2da320972a5a2dd2d9f07728bb6c6c05e8f164a8d53dc607d6f29d43  numpy-1.20.0rc2.tar.gz
793383d52f79c785ad2e7cf24b064f8ff5041ee0e44cef34368918c1b89e9d58  numpy-1.20.0rc2.zip
numpy -

Published by charris almost 4 years ago

NumPy 1.20.0 Release Notes

This NumPy release is the largest so made to date, some 654 PRs
contributed by 182 people have been merged. See the list of highlights
below for more details. The Python versions supported for this release
are 3.7-3.9, support for Python 3.6 has been dropped. Highlights are

  • Annotations for NumPy functions. This work is ongoing and
    improvements can be expected pending feedback from users.
  • Wider use of SIMD to increase execution speed of ufuncs. Much work
    has been done in introducing universal functions that will ease use
    of modern features across different hardware platforms. This work is
    ongoing.
  • Preliminary work in changing the dtype and casting implementations
    in order to provide an easier path to extending dtypes. This work is
    ongoing but enough has been done to allow experimentation and
    feedback.
  • Extensive documentation improvements comprising some 185 PR merges.
    This work is ongoing and part of the larger project to improve
    NumPy's online presence and usefulness to new users.
  • Further cleanups related to removing Python 2.7. This improves code
    readability and removes technical debt.
  • Preliminary support for the upcoming Cython 3.0.

New functions

The random.Generator class has a new permuted function.

The new function differs from shuffle and permutation in that the
subarrays indexed by an axis are permuted rather than the axis being
treated as a separate 1-D array for every combination of the other
indexes. For example, it is now possible to permute the rows or columns
of a 2-D array.

(gh-15121)

sliding_window_view provides a sliding window view for numpy arrays

[numpy.lib.stride_tricks.sliding_window_view]{.title-ref} constructs
views on numpy arrays that offer a sliding or moving window access to
the array. This allows for the simple implementation of certain
algorithms, such as running means.

(gh-17394)

[numpy.broadcast_shapes]{.title-ref} is a new user-facing function

[~numpy.broadcast_shapes]{.title-ref} gets the resulting shape from
broadcasting the given shape tuples against each other.

>>> np.broadcast_shapes((1, 2), (3, 1))
(3, 2)

>>> np.broadcast_shapes(2, (3, 1))
(3, 2)

>>> np.broadcast_shapes((6, 7), (5, 6, 1), (7,), (5, 1, 7))
(5, 6, 7)

(gh-17535)

Deprecations

Using the aliases of builtin types like np.int is deprecated

For a long time, np.int has been an alias of the builtin int. This
is repeatedly a cause of confusion for newcomers, and is also simply not
useful.

These aliases have been deprecated. The table below shows the full list
of deprecated aliases, along with their exact meaning. Replacing uses of
items in the first column with the contents of the second column will
work identically and silence the deprecation warning.

In many cases, it may have been intended to use the types from the third
column. Be aware that use of these types may result in subtle but
desirable behavior changes.

Deprecated name Identical to Possibly intended numpy type


numpy.bool bool [numpy.bool_]{.title-ref}
numpy.int int [numpy.int_]{.title-ref} (default int dtype), [numpy.cint]{.title-ref} (C int)
numpy.float float [numpy.float_]{.title-ref}, [numpy.double]{.title-ref} (equivalent)
numpy.complex complex [numpy.complex_]{.title-ref}, [numpy.cdouble]{.title-ref} (equivalent)
numpy.object object [numpy.object_]{.title-ref}
numpy.str str [numpy.str_]{.title-ref}
numpy.long int (long on Python 2) [numpy.int_]{.title-ref} (C long), [numpy.longlong]{.title-ref} (largest integer type)
numpy.unicode str (unicode on Python 2) [numpy.unicode_]{.title-ref}

Note that for technical reasons these deprecation warnings will only be
emitted on Python 3.7 and above.

(gh-14882)

Passing shape=None to functions with a non-optional shape argument is deprecated

Previously, this was an alias for passing shape=(). This deprecation
is emitted by [PyArray_IntpConverter]{.title-ref} in the C API. If your
API is intended to support passing None, then you should check for
None prior to invoking the converter, so as to be able to distinguish
None and ().

(gh-15886)

Indexing errors will be reported even when index result is empty

In the future, NumPy will raise an IndexError when an integer array
index contains out of bound values even if a non-indexed dimension is of
length 0. This will now emit a DeprecationWarning. This can happen when
the array is previously empty, or an empty slice is involved:

arr1 = np.zeros((5, 0))
arr1[[20]]
arr2 = np.zeros((5, 5))
arr2[[20], :0]

Previously the non-empty index [20] was not checked for correctness.
It will now be checked causing a deprecation warning which will be
turned into an error. This also applies to assignments.

(gh-15900)

Inexact matches for mode and searchside are deprecated

Inexact and case insensitive matches for mode and searchside were
valid inputs earlier and will give a DeprecationWarning now. For
example, below are some example usages which are now deprecated and will
give a DeprecationWarning:

import numpy as np
arr = np.array([[3, 6, 6], [4, 5, 1]])
# mode: inexact match
np.ravel_multi_index(arr, (7, 6), mode="clap")  # should be "clip"
# searchside: inexact match
np.searchsorted(arr[0], 4, side='random')  # should be "right"

(gh-16056)

Deprecation of [numpy.dual]{.title-ref}

The module [numpy.dual]{.title-ref} is deprecated. Instead of importing
functions from [numpy.dual]{.title-ref}, the functions should be
imported directly from NumPy or SciPy.

(gh-16156)

outer and ufunc.outer deprecated for matrix

np.matrix use with [~numpy.outer]{.title-ref} or generic ufunc outer
calls such as numpy.add.outer. Previously, matrix was converted to an
array here. This will not be done in the future requiring a manual
conversion to arrays.

(gh-16232)

Further Numeric Style types Deprecated

The remaining numeric-style type codes Bytes0, Str0, Uint32,
Uint64, and Datetime64 have been deprecated. The lower-case variants
should be used instead. For bytes and string "S" and "U" are further
alternatives.

(gh-16554)

The ndincr method of ndindex is deprecated

The documentation has warned against using this function since NumPy
1.8. Use next(it) instead of it.ndincr().

(gh-17233)

Future Changes

Arrays cannot be using subarray dtypes

Array creation and casting using np.array(arr, dtype) and
arr.astype(dtype) will use different logic when dtype is a subarray
dtype such as np.dtype("(2)i,").

For such a dtype the following behaviour is true:

res = np.array(arr, dtype)

res.dtype is not dtype
res.dtype is dtype.base
res.shape == arr.shape + dtype.shape

But res is filled using the logic:

res = np.empty(arr.shape + dtype.shape, dtype=dtype.base)
res[...] = arr

which uses incorrect broadcasting (and often leads to an error). In the
future, this will instead cast each element individually, leading to the
same result as:

res = np.array(arr, dtype=np.dtype(["f", dtype]))["f"]

Which can normally be used to opt-in to the new behaviour.

This change does not affect np.array(list, dtype="(2)i,") unless the
list itself includes at least one array. In particular, the behaviour
is unchanged for a list of tuples.

(gh-17596)

Expired deprecations

  • The deprecation of numeric style type-codes np.dtype("Complex64")
    (with upper case spelling), is expired. "Complex64" corresponded
    to "complex128" and "Complex32" corresponded to "complex64".

  • The deprecation of np.sctypeNA and np.typeNA is expired. Both
    have been removed from the public API. Use np.typeDict instead.

    (gh-16554)

  • The 14-year deprecation of np.ctypeslib.ctypes_load_library is
    expired. Use ~numpy.ctypeslib.load_library{.interpreted-text
    role="func"} instead, which is identical.

    (gh-17116)

Financial functions removed

In accordance with NEP 32, the financial functions are removed from
NumPy 1.20. The functions that have been removed are fv, ipmt,
irr, mirr, nper, npv, pmt, ppmt, pv, and rate. These
functions are available in the
numpy_financial library.

(gh-17067)

Compatibility notes

Same kind casting in concatenate with axis=None

When [~numpy.concatenate]{.title-ref} is called with axis=None, the
flattened arrays were cast with unsafe. Any other axis choice uses
"same kind". That different default has been deprecated and "same
kind" casting will be used instead. The new casting keyword argument
can be used to retain the old behaviour.

(gh-16134)

NumPy Scalars are cast when assigned to arrays

When creating or assigning to arrays, in all relevant cases NumPy
scalars will now be cast identically to NumPy arrays. In particular this
changes the behaviour in some cases which previously raised an error:

np.array([np.float64(np.nan)], dtype=np.int64)

will succeed and return an undefined result (usually the smallest
possible integer). This also affects assignments:

arr[0] = np.float64(np.nan)

At this time, NumPy retains the behaviour for:

np.array(np.float64(np.nan), dtype=np.int64)

The above changes do not affect Python scalars:

np.array([float("NaN")], dtype=np.int64)

remains unaffected (np.nan is a Python float, not a NumPy one).
Unlike signed integers, unsigned integers do not retain this special
case, since they always behaved more like casting. The following code
stops raising an error:

np.array([np.float64(np.nan)], dtype=np.uint64)

To avoid backward compatibility issues, at this time assignment from
datetime64 scalar to strings of too short length remains supported.
This means that np.asarray(np.datetime64("2020-10-10"), dtype="S5")
succeeds now, when it failed before. In the long term this may be
deprecated or the unsafe cast may be allowed generally to make
assignment of arrays and scalars behave consistently.

Array coercion changes when Strings and other types are mixed

When strings and other types are mixed, such as:

np.array(["string", np.float64(3.)], dtype="S")

The results will change, which may lead to string dtypes with longer
strings in some cases. In particularly, if dtype="S" is not provided
any numerical value will lead to a string results long enough to hold
all possible numerical values. (e.g. "S32" for floats). Note that you
should always provide dtype="S" when converting non-strings to
strings.

If dtype="S" is provided the results will be largely identical to
before, but NumPy scalars (not a Python float like 1.0), will still
enforce a uniform string length:

np.array([np.float64(3.)], dtype="S")  # gives "S32"
np.array([3.0], dtype="S")  # gives "S3"

Previously the first version gave the same result as the second.

Array coercion restructure

Array coercion has been restructured. In general, this should not affect
users. In extremely rare corner cases where array-likes are nested:

np.array([array_like1])

Things will now be more consistent with:

np.array([np.array(array_like1)])

This could potentially subtly change output for badly defined
array-likes. We are not aware of any such case where the results were
not clearly incorrect previously.

(gh-16200)

Writing to the result of [numpy.broadcast_arrays]{.title-ref} will export readonly buffers

In NumPy 1.17 [numpy.broadcast_arrays]{.title-ref} started warning when
the resulting array was written to. This warning was skipped when the
array was used through the buffer interface (e.g. memoryview(arr)).
The same thing will now occur for the two protocols
__array_interface__, and __array_struct__ returning read-only
buffers instead of giving a warning.

(gh-16350)

Numeric-style type names have been removed from type dictionaries

To stay in sync with the deprecation for np.dtype("Complex64") and
other numeric-style (capital case) types. These were removed from
np.sctypeDict and np.typeDict. You should use the lower case
versions instead. Note that "Complex64" corresponds to "complex128"
and "Complex32" corresponds to "complex64". The numpy style (new)
versions, denote the full size and not the size of the real/imaginary
part.

(gh-16554)

The operator.concat function now raises TypeError for array arguments

The previous behavior was to fall back to addition and add the two
arrays, which was thought to be unexpected behavior for a concatenation
function.

(gh-16570)

nickname attribute removed from ABCPolyBase

An abstract property nickname has been removed from ABCPolyBase as
it was no longer used in the derived convenience classes. This may
affect users who have derived classes from ABCPolyBase and overridden
the methods for representation and display, e.g. __str__, __repr__,
_repr_latex, etc.

(gh-16589)

float->timedelta and uint64->timedelta promotion will raise a TypeError

Float and timedelta promotion consistently raises a TypeError.
np.promote_types("float32", "m8") aligns with
np.promote_types("m8", "float32") now and both raise a TypeError.
Previously, np.promote_types("float32", "m8") returned "m8" which
was considered a bug.

Uint64 and timedelta promotion consistently raises a TypeError.
np.promote_types("uint64", "m8") aligns with
np.promote_types("m8", "uint64") now and both raise a TypeError.
Previously, np.promote_types("uint64", "m8") returned "m8" which was
considered a bug.

(gh-16592)

numpy.genfromtxt now correctly unpacks structured arrays

Previously, [numpy.genfromtxt]{.title-ref} failed to unpack if it was
called with unpack=True and a structured datatype was passed to the
dtype argument (or dtype=None was passed and a structured datatype
was inferred). For example:

>>> data = StringIO("21 58.0\n35 72.0")
>>> np.genfromtxt(data, dtype=None, unpack=True)
array([(21, 58.), (35, 72.)], dtype=[('f0', '<i8'), ('f1', '<f8')])

Structured arrays will now correctly unpack into a list of arrays, one
for each column:

>>> np.genfromtxt(data, dtype=None, unpack=True)
[array([21, 35]), array([58., 72.])]

(gh-16650)

mgrid, r_, etc. consistently return correct outputs for non-default precision input

Previously,
np.mgrid[np.float32(0.1):np.float32(0.35):np.float32(0.1),] and
np.r_[0:10:np.complex64(3j)] failed to return meaningful output. This
bug potentially affects [~numpy.mgrid]{.title-ref},
[~numpy.ogrid]{.title-ref}, [~numpy.r_]{.title-ref}, and
[~numpy.c_]{.title-ref} when an input with dtype other than the
default float64 and complex128 and equivalent Python types were
used. The methods have been fixed to handle varying precision correctly.

(gh-16815)

Boolean array indices with mismatching shapes now properly give IndexError

Previously, if a boolean array index matched the size of the indexed
array but not the shape, it was incorrectly allowed in some cases. In
other cases, it gave an error, but the error was incorrectly a
ValueError with a message about broadcasting instead of the correct
IndexError.

For example, the following used to incorrectly give
ValueError: operands could not be broadcast together with shapes (2,2) (1,4):

np.empty((2, 2))[np.array([[True, False, False, False]])]

And the following used to incorrectly return array([], dtype=float64):

np.empty((2, 2))[np.array([[False, False, False, False]])]

Both now correctly give
IndexError: boolean index did not match indexed array along dimension 0; dimension is 2 but corresponding boolean dimension is 1.

(gh-17010)

Casting errors interrupt Iteration

When iterating while casting values, an error may stop the iteration
earlier than before. In any case, a failed casting operation always
returned undefined, partial results. Those may now be even more
undefined and partial. For users of the NpyIter C-API such cast errors
will now cause the [iternext()]{.title-ref} function to return 0 and
thus abort iteration. Currently, there is no API to detect such an error
directly. It is necessary to check PyErr_Occurred(), which may be
problematic in combination with NpyIter_Reset. These issues always
existed, but new API could be added if required by users.

(gh-17029)

f2py generated code may return unicode instead of byte strings

Some byte strings previously returned by f2py generated code may now be
unicode strings. This results from the ongoing Python2 -> Python3
cleanup.

(gh-17068)

The first element of the __array_interface__["data"] tuple must be an integer

This has been the documented interface for many years, but there was
still code that would accept a byte string representation of the pointer
address. That code has been removed, passing the address as a byte
string will now raise an error.

(gh-17241)

poly1d respects the dtype of all-zero argument

Previously, constructing an instance of poly1d with all-zero
coefficients would cast the coefficients to np.float64. This affected
the output dtype of methods which construct poly1d instances
internally, such as np.polymul.

(gh-17577)

The numpy.i file for swig is Python 3 only.

Uses of Python 2.7 C-API functions have been updated to Python 3 only.
Users who need the old version should take it from an older version of
NumPy.

(gh-17580)

Void dtype discovery in np.array

In calls using np.array(..., dtype="V"), arr.astype("V"), and
similar a TypeError will now be correctly raised unless all elements
have the identical void length. An example for this is:

np.array([b"1", b"12"], dtype="V")

Which previously returned an array with dtype "V2" which cannot
represent b"1" faithfully.

(gh-17706)

C API changes

Size of np.ndarray and np.void_ changed

The size of the PyArrayObject and PyVoidScalarObject structures have
changed. The following header definition has been removed:

#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))

since the size must not be considered a compile time constant: it will
change for different runtime versions of NumPy.

The most likely relevant use are potential subclasses written in C which
will have to be recompiled and should be updated. Please see the
documentation for :cPyArrayObject{.interpreted-text role="type"} for
more details and contact the NumPy developers if you are affected by
this change.

NumPy will attempt to give a graceful error but a program expecting a
fixed structure size may have undefined behaviour and likely crash.

(gh-16938)

New Features

where keyword argument for numpy.all and numpy.any functions

The keyword argument where is added and allows to only consider
specified elements or subaxes from an array in the Boolean evaluation of
all and any. This new keyword is available to the functions all
and any both via numpy directly or in the methods of
numpy.ndarray.

Any broadcastable Boolean array or a scalar can be set as where. It
defaults to True to evaluate the functions for all elements in an
array if where is not set by the user. Examples are given in the
documentation of the functions.

where keyword argument for numpy functions mean, std, var

The keyword argument where is added and allows to limit the scope in
the calculation of mean, std and var to only a subset of elements.
It is available both via numpy directly or in the methods of
numpy.ndarray.

Any broadcastable Boolean array or a scalar can be set as where. It
defaults to True to evaluate the functions for all elements in an
array if where is not set by the user. Examples are given in the
documentation of the functions.

(gh-15852)

norm=backward, forward keyword options for numpy.fft functions

The keyword argument option norm=backward is added as an alias for
None and acts as the default option; using it has the direct
transforms unscaled and the inverse transforms scaled by 1/n.

Using the new keyword argument option norm=forward has the direct
transforms scaled by 1/n and the inverse transforms unscaled (i.e.
exactly opposite to the default option norm=backward).

(gh-16476)

NumPy is now typed

Type annotations have been added for large parts of NumPy. There is also
a new [numpy.typing]{.title-ref} module that contains useful types for
end-users. The currently available types are

  • ArrayLike: for objects that can be coerced to an array
  • DtypeLike: for objects that can be coerced to a dtype

(gh-16515)

numpy.typing is accessible at runtime

The types in numpy.typing can now be imported at runtime. Code like
the following will now work:

from numpy.typing import ArrayLike
x: ArrayLike = [1, 2, 3, 4]

(gh-16558)

New __f2py_numpy_version__ attribute for f2py generated modules.

Because f2py is released together with NumPy, __f2py_numpy_version__
provides a way to track the version f2py used to generate the module.

(gh-16594)

mypy tests can be run via runtests.py

Currently running mypy with the NumPy stubs configured requires either:

  • Installing NumPy
  • Adding the source directory to MYPYPATH and linking to the
    mypy.ini

Both options are somewhat inconvenient, so add a --mypy option to
runtests that handles setting things up for you. This will also be
useful in the future for any typing codegen since it will ensure the
project is built before type checking.

(gh-17123)

Negation of user defined BLAS/LAPACK detection order

[~numpy.distutils]{.title-ref} allows negation of libraries when
determining BLAS/LAPACK libraries. This may be used to remove an item
from the library resolution phase, i.e. to disallow NetLIB libraries one
could do:

NPY_BLAS_ORDER='^blas' NPY_LAPACK_ORDER='^lapack' python setup.py build

That will use any of the accelerated libraries instead.

(gh-17219)

Allow passing optimizations arguments to asv build

It is now possible to pass -j, --cpu-baseline, --cpu-dispatch and
--disable-optimization flags to ASV build when the --bench-compare
argument is used.

(gh-17284)

The NVIDIA HPC SDK nvfortran compiler is now supported

Support for the nvfortran compiler, a version of pgfortran, has been
added.

(gh-17344)

dtype option for cov and corrcoef

The dtype option is now available for [numpy.cov]{.title-ref} and
[numpy.corrcoef]{.title-ref}. It specifies which data-type the returned
result should have. By default the functions still return a
[numpy.float64]{.title-ref} result.

(gh-17456)

Improvements

Improved string representation for polynomials (__str__)

The string representation (__str__) of all six polynomial types in
[numpy.polynomial]{.title-ref} has been updated to give the polynomial
as a mathematical expression instead of an array of coefficients. Two
package-wide formats for the polynomial expressions are available - one
using Unicode characters for superscripts and subscripts, and another
using only ASCII characters.

(gh-15666)

Remove the Accelerate library as a candidate LAPACK library

Apple no longer supports Accelerate. Remove it.

(gh-15759)

Object arrays containing multi-line objects have a more readable repr

If elements of an object array have a repr containing new lines, then
the wrapped lines will be aligned by column. Notably, this improves the
repr of nested arrays:

>>> np.array([np.eye(2), np.eye(3)], dtype=object)
array([array([[1., 0.],
              [0., 1.]]),
       array([[1., 0., 0.],
              [0., 1., 0.],
              [0., 0., 1.]])], dtype=object)

(gh-15997)

Concatenate supports providing an output dtype

Support was added to [~numpy.concatenate]{.title-ref} to provide an
output dtype and casting using keyword arguments. The dtype
argument cannot be provided in conjunction with the out one.

(gh-16134)

Thread safe f2py callback functions

Callback functions in f2py are now thread safe.

(gh-16519)

[numpy.core.records.fromfile]{.title-ref} now supports file-like objects

[numpy.rec.fromfile]{.title-ref} can now use file-like objects, for
instance :pyio.BytesIO{.interpreted-text role="class"}

(gh-16675)

RPATH support on AIX added to distutils

This allows SciPy to be built on AIX.

(gh-16710)

Use f90 compiler specified by the command line args

The compiler command selection for Fortran Portland Group Compiler is
changed in [numpy.distutils.fcompiler]{.title-ref}. This only affects
the linking command. This forces the use of the executable provided by
the command line option (if provided) instead of the pgfortran
executable. If no executable is provided to the command line option it
defaults to the pgf90 executable, wich is an alias for pgfortran
according to the PGI documentation.

(gh-16730)

Add NumPy declarations for Cython 3.0 and later

The pxd declarations for Cython 3.0 were improved to avoid using
deprecated NumPy C-API features. Extension modules built with Cython
3.0+ that use NumPy can now set the C macro
NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION to avoid C compiler warnings
about deprecated API usage.

(gh-16986)

Make the window functions exactly symmetric

Make sure the window functions provided by NumPy are symmetric. There
were previously small deviations from symmetry due to numerical
precision that are now avoided by better arrangement of the computation.

(gh-17195)

Performance improvements and changes

Enable multi-platform SIMD compiler optimizations

A series of improvements for NumPy infrastructure to pave the way to
NEP-38, that can be summarized as follow:

  • New Build Arguments

    • --cpu-baseline to specify the minimal set of required
      optimizations, default value is min which provides the minimum
      CPU features that can safely run on a wide range of users
      platforms.
    • --cpu-dispatch to specify the dispatched set of additional
      optimizations, default value is max -xop -fma4 which enables
      all CPU features, except for AMD legacy features.
    • --disable-optimization to explicitly disable the whole new
      improvements, It also adds a new C compiler #definition
      called NPY_DISABLE_OPTIMIZATION which it can be used as guard
      for any SIMD code.
  • Advanced CPU dispatcher

    A flexible cross-architecture CPU dispatcher built on the top of
    Python/Numpy distutils, support all common compilers with a wide
    range of CPU features.

    The new dispatcher requires a special file extension *.dispatch.c
    to mark the dispatch-able C sources. These sources have the
    ability to be compiled multiple times so that each compilation
    process represents certain CPU features and provides different
    #definitions and flags that affect the code paths.

  • New auto-generated C header
    ``core/src/common/_cpu_dispatch.h``

    This header is generated by the distutils module ccompiler_opt,
    and contains all the #definitions and headers of instruction sets,
    that had been configured through command arguments
    '--cpu-baseline' and '--cpu-dispatch'.

  • New C header ``core/src/common/npy_cpu_dispatch.h``

    This header contains all utilities that required for the whole CPU
    dispatching process, it also can be considered as a bridge linking
    the new infrastructure work with NumPy CPU runtime detection.

  • Add new attributes to NumPy umath module(Python level)

    • __cpu_baseline__ a list contains the minimal set of required
      optimizations that supported by the compiler and platform
      according to the specified values to command argument
      '--cpu-baseline'.
    • __cpu_dispatch__ a list contains the dispatched set of
      additional optimizations that supported by the compiler and
      platform according to the specified values to command argument
      '--cpu-dispatch'.
  • Print the supported CPU features during the run of PytestTester

(gh-13516)

Changes

Changed behavior of divmod(1., 0.) and related functions

The changes also assure that different compiler versions have the same
behavior for nan or inf usages in these operations. This was previously
compiler dependent, we now force the invalid and divide by zero flags,
making the results the same across compilers. For example, gcc-5, gcc-8,
or gcc-9 now result in the same behavior. The changes are tabulated
below:

Operator Old Warning New Warning Old Result New Result Works on MacOS


np.divmod(1.0, 0.0) Invalid Invalid and Dividebyzero nan, nan inf, nan Yes
np.fmod(1.0, 0.0) Invalid Invalid nan nan No? Yes
np.floor_divide(1.0, 0.0) Invalid Dividebyzero nan inf Yes
np.remainder(1.0, 0.0) Invalid Invalid nan nan Yes

: Summary of New Behavior

(gh-16161)

np.linspace on integers now uses floor

When using a int dtype in [numpy.linspace]{.title-ref}, previously
float values would be rounded towards zero. Now
[numpy.floor]{.title-ref} is used instead, which rounds toward -inf.
This changes the results for negative values. For example, the following
would previously give:

>>> np.linspace(-3, 1, 8, dtype=int)
array([-3, -2, -1, -1,  0,  0,  0,  1])

and now results in:

>>> np.linspace(-3, 1, 8, dtype=int)
array([-3, -3, -2, -2, -1, -1,  0,  1])

The former result can still be obtained with:

>>> np.linspace(-3, 1, 8).astype(int)
array([-3, -2, -1, -1,  0,  0,  0,  1])

(gh-16841)

Checksums

MD5

c182567139ec82a140d5fbf363ed1697  numpy-1.20.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
06de963440e3dcf0dfd619a2b4936e59  numpy-1.20.0rc1-cp37-cp37m-manylinux1_i686.whl
436a34182e234dce16bc597929a61313  numpy-1.20.0rc1-cp37-cp37m-manylinux1_x86_64.whl
73aa4c274c2aee36f5f4d1c58b74a4a8  numpy-1.20.0rc1-cp37-cp37m-manylinux2010_i686.whl
cc0bbd29cca3f80dbb09a3177df6b677  numpy-1.20.0rc1-cp37-cp37m-manylinux2010_x86_64.whl
be993784ee6c9e9e95f949071f30a853  numpy-1.20.0rc1-cp37-cp37m-manylinux2014_aarch64.whl
971e01facbe869f95dda518ecc0b4c09  numpy-1.20.0rc1-cp37-cp37m-win32.whl
951e744fb554af874a0ba4bdbeedc882  numpy-1.20.0rc1-cp37-cp37m-win_amd64.whl
197de0d040463b4d6026e83284f272ac  numpy-1.20.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
27f146dbee25d7058def106f5c15eca0  numpy-1.20.0rc1-cp38-cp38-manylinux1_i686.whl
b0f5ec0b31566270f8546a79d73e3424  numpy-1.20.0rc1-cp38-cp38-manylinux1_x86_64.whl
2e9c06be7d826451b9227b11b3e6cd69  numpy-1.20.0rc1-cp38-cp38-manylinux2010_i686.whl
f9fb7537b1e8197824f47650e883c63d  numpy-1.20.0rc1-cp38-cp38-manylinux2010_x86_64.whl
83ad71e9a7a46947e2fe203e3f822ad3  numpy-1.20.0rc1-cp38-cp38-manylinux2014_aarch64.whl
318da96660e8c8ce5bac22e851969d15  numpy-1.20.0rc1-cp38-cp38-win32.whl
051419fe996b984eced3a6e28320a45a  numpy-1.20.0rc1-cp38-cp38-win_amd64.whl
bca434dd07cd58b2436e592efc72c10b  numpy-1.20.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
91beb7602bc10db4a912b9de8d082efe  numpy-1.20.0rc1-cp39-cp39-manylinux2010_i686.whl
d213368ea0f28697597041ab175242f1  numpy-1.20.0rc1-cp39-cp39-manylinux2010_x86_64.whl
c1f3936e707014e1683eaeae30b71649  numpy-1.20.0rc1-cp39-cp39-manylinux2014_aarch64.whl
d4881ad35eb820a5e3a27bb47adcbb2b  numpy-1.20.0rc1-cp39-cp39-win32.whl
ae4a01a84de51a0957452611dbad1199  numpy-1.20.0rc1-cp39-cp39-win_amd64.whl
c3d85a1bada3081b917ee9498ec4fb08  numpy-1.20.0rc1-pp37-pypy37_pp73-manylinux2010_x86_64.whl
94bb7d8f42e03c0c1cd37c230fcdfc14  numpy-1.20.0rc1.tar.gz
1ed93be9e6bfb1de153af93d20c4e443  numpy-1.20.0rc1.zip

SHA256

01e9029472857f8dd9868e1f83f3ff9df0b477e9e7554bc4455eb5293b8ae335  numpy-1.20.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
c6545bc46b3e4accaff4c542b4b4b95993ef0e4d74bb86fe19189b630740f76e  numpy-1.20.0rc1-cp37-cp37m-manylinux1_i686.whl
b028d1104eb8f7c5f0bc5bdc4c35768efc755b459f3a67b38a79eb9b86e354c2  numpy-1.20.0rc1-cp37-cp37m-manylinux1_x86_64.whl
4789ad6cc531c9a24ce8cff59ac3c669e307599fba2bd40c2bc700d5b3013105  numpy-1.20.0rc1-cp37-cp37m-manylinux2010_i686.whl
e9b0138142f72a3c143f262fd435b331e9807a2eb1c0e2ff6904f2cdc9b9b1a5  numpy-1.20.0rc1-cp37-cp37m-manylinux2010_x86_64.whl
a2a4d00b119c71ba83fc1dd0f4dc71e2dd0fd61acd5cbd40541da4f9172427d3  numpy-1.20.0rc1-cp37-cp37m-manylinux2014_aarch64.whl
dcee4823291188e213d681b05a2749ff36a87d4933a91b9654fcf0e2bf02ce4a  numpy-1.20.0rc1-cp37-cp37m-win32.whl
b1cf3925dda0920ee469c95260d2313f1f4a8d6381d42cfdd607e6fd991c4256  numpy-1.20.0rc1-cp37-cp37m-win_amd64.whl
10baa94959bcbea0070e82e7ed3db9090fbaf267811a74701bdc0a0697dfe2ae  numpy-1.20.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
7f7f08cc1a3415a61382a2c60bd71d5bd3efa33ee90ebc14ce4754dfa0a138c9  numpy-1.20.0rc1-cp38-cp38-manylinux1_i686.whl
1a544c8d7928c85fcfb3af1649aad7d60376e89f9bc5be89f6da6d5eff1ed107  numpy-1.20.0rc1-cp38-cp38-manylinux1_x86_64.whl
c9a21184a9b40793bc17a1456c3713a98c9466af2d1f849354cef0a756e2f7c6  numpy-1.20.0rc1-cp38-cp38-manylinux2010_i686.whl
09fcbaef175786b99287039ada5dcf2c9131b65ceab1807fa9a61e5b062091a8  numpy-1.20.0rc1-cp38-cp38-manylinux2010_x86_64.whl
ce8c2a2fbfdaf14fd7ed85e9a10bea9247f9f884bf504ed773aee8c0adcee220  numpy-1.20.0rc1-cp38-cp38-manylinux2014_aarch64.whl
dd298a8efe8c62acb94797932d39ad3b74d1c4c1f496fa259b28a677e8f4793e  numpy-1.20.0rc1-cp38-cp38-win32.whl
55dcf4a830d1198a72b6afb72cb02879c3abb95024c250402851de66db94a30d  numpy-1.20.0rc1-cp38-cp38-win_amd64.whl
76cda96f70435bf75cac28dd081bb9e47e8eaf2badd1d9ad5ab19723d74e5921  numpy-1.20.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
ed955ab39527f7500b31dae6075b00f284a0c2eb23e7fd1a5a40a5066cab309f  numpy-1.20.0rc1-cp39-cp39-manylinux2010_i686.whl
b38a2caf64429bab2c06b87eea0d2b24f736894f805f3d7210ecafb5573cb0de  numpy-1.20.0rc1-cp39-cp39-manylinux2010_x86_64.whl
14aa454e438290d1ce464c80530157dc1ece86e34dd79a8077ca0e05ebab3665  numpy-1.20.0rc1-cp39-cp39-manylinux2014_aarch64.whl
3c27251c07f8e3cd727cab8cc275c1294be006ed725496090a6081f6d8d1d811  numpy-1.20.0rc1-cp39-cp39-win32.whl
4925c540f1bde557987c2d0b258b9c57cb6da020957ffa4ac355f13d6819b121  numpy-1.20.0rc1-cp39-cp39-win_amd64.whl
e9a5652afbe2128cb1734546608a0a0d5dbd21160738a40521464d7cb4cc22b5  numpy-1.20.0rc1-pp37-pypy37_pp73-manylinux2010_x86_64.whl
b4993844022e98fe363467ce42404ffd6f975239d294b6e4ea44a6e797891fac  numpy-1.20.0rc1.tar.gz
98f4e754f1c3db7ca53e53b1ef6474703b167af75f3784f99b1fe4dd936ea77f  numpy-1.20.0rc1.zip
numpy -

Published by charris almost 4 years ago

NumPy 1.19.4 Release Notes

NumPy 1.19.4 is a quick release to revert the OpenBLAS library version.
It was hoped that the 0.3.12 OpenBLAS version used in 1.19.3 would work
around the Microsoft fmod bug, but problems in some docker environments
turned up. Instead, 1.19.4 will use the older library and run a sanity
check on import, raising an error if the problem is detected. Microsoft
is aware of the problem and has promised a fix, users should upgrade
when it becomes available.

This release supports Python 3.6-3.9

Contributors

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

  • Charles Harris

Pull requests merged

A total of 2 pull requests were merged for this release.

  • #17679: MAINT: Add check for Windows 10 version 2004 bug.
  • #17680: REV: Revert OpenBLAS to 1.19.2 version for 1.19.4

Checksums

MD5

09b6f7f17ca61f0f3b943d4107ea6a6c  numpy-1.19.4-cp36-cp36m-macosx_10_9_x86_64.whl
bfb801672e0d9916407352f7158b5584  numpy-1.19.4-cp36-cp36m-manylinux1_i686.whl
2469be359c8c383509eaded8e758488a  numpy-1.19.4-cp36-cp36m-manylinux1_x86_64.whl
4af398903b0957ad3a40ec17631879ed  numpy-1.19.4-cp36-cp36m-manylinux2010_i686.whl
bb3f911ba616d36a2daff5b8e1402b1b  numpy-1.19.4-cp36-cp36m-manylinux2010_x86_64.whl
3b754c1135f7aa3e6a7c1f46af6a84c9  numpy-1.19.4-cp36-cp36m-manylinux2014_aarch64.whl
9db8749b90405780614f126c77eef3bb  numpy-1.19.4-cp36-cp36m-win32.whl
25bc59391b8b4f06eb28e74e97afc488  numpy-1.19.4-cp36-cp36m-win_amd64.whl
355d7f49b9e442f9e73580e64c8bf2c2  numpy-1.19.4-cp37-cp37m-macosx_10_9_x86_64.whl
3c1ce8ca6f6f11ea9d49859b2ffb70cf  numpy-1.19.4-cp37-cp37m-manylinux1_i686.whl
5524143ee95cc7e3400dbbff709de7cd  numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.whl
c40206040b8ddb62309cbef1cdf0fa82  numpy-1.19.4-cp37-cp37m-manylinux2010_i686.whl
552839ea3bc2dfc98611254f8188feb8  numpy-1.19.4-cp37-cp37m-manylinux2010_x86_64.whl
2e5c50e57cff5085ffb32185591e49ed  numpy-1.19.4-cp37-cp37m-manylinux2014_aarch64.whl
ce6c1cd93d5fc56d0de608b84cc14a7e  numpy-1.19.4-cp37-cp37m-win32.whl
a73acaea97da74db366372b3d70219a7  numpy-1.19.4-cp37-cp37m-win_amd64.whl
2f52c91231b2b3c54535dee98a5ad0a3  numpy-1.19.4-cp38-cp38-macosx_10_9_x86_64.whl
e619d04f2ac42a9feb0efcc1d9901d94  numpy-1.19.4-cp38-cp38-manylinux1_i686.whl
01c2f102e73b2569cf3ebe5eab112c4e  numpy-1.19.4-cp38-cp38-manylinux1_x86_64.whl
6a66109907b356ddd67f1e282e1879e6  numpy-1.19.4-cp38-cp38-manylinux2010_i686.whl
79354b01e11789bb5d12c9edc754297b  numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl
4f1b335dfe5c7fcf5c8c89983cef9f0b  numpy-1.19.4-cp38-cp38-manylinux2014_aarch64.whl
949a5f9e9a75b9cbb3c74e4bf4eb0683  numpy-1.19.4-cp38-cp38-win32.whl
27eb1b83f3cac67fb26c7fe9a25b0635  numpy-1.19.4-cp38-cp38-win_amd64.whl
ae1e4a06e721e83b530860835c708690  numpy-1.19.4-cp39-cp39-macosx_10_9_x86_64.whl
d263c7d04c46d5ecca3b32ad11925bad  numpy-1.19.4-cp39-cp39-manylinux1_i686.whl
132e95910d76b045caf1883146ec34a6  numpy-1.19.4-cp39-cp39-manylinux1_x86_64.whl
4d4e5f147fe6fdedbdde4df9eaf2a4b1  numpy-1.19.4-cp39-cp39-manylinux2010_i686.whl
5ac2071e995ff4fc066741b1edcc159c  numpy-1.19.4-cp39-cp39-manylinux2010_x86_64.whl
5d678c6cc45ee3ee976e8b3b2ebe9c13  numpy-1.19.4-cp39-cp39-manylinux2014_aarch64.whl
7bc02e21133a1b82994c81c7521156a8  numpy-1.19.4-cp39-cp39-win32.whl
55c735347e8fb2ce3674243b38b3cee3  numpy-1.19.4-cp39-cp39-win_amd64.whl
673234a8dc2d3d3912c24c64aef6263e  numpy-1.19.4-pp36-pypy36_pp73-manylinux2010_x86_64.whl
a25e91ea62ffd37ccf8e0d917484962c  numpy-1.19.4.tar.gz
d40f6fcf611ab40eed4ff90606e05307  numpy-1.19.4.zip

SHA256

e9b30d4bd69498fc0c3fe9db5f62fffbb06b8eb9321f92cc970f2969be5e3949  numpy-1.19.4-cp36-cp36m-macosx_10_9_x86_64.whl
fedbd128668ead37f33917820b704784aff695e0019309ad446a6d0b065b57e4  numpy-1.19.4-cp36-cp36m-manylinux1_i686.whl
8ece138c3a16db8c1ad38f52eb32be6086cc72f403150a79336eb2045723a1ad  numpy-1.19.4-cp36-cp36m-manylinux1_x86_64.whl
64324f64f90a9e4ef732be0928be853eee378fd6a01be21a0a8469c4f2682c83  numpy-1.19.4-cp36-cp36m-manylinux2010_i686.whl
ad6f2ff5b1989a4899bf89800a671d71b1612e5ff40866d1f4d8bcf48d4e5764  numpy-1.19.4-cp36-cp36m-manylinux2010_x86_64.whl
d6c7bb82883680e168b55b49c70af29b84b84abb161cbac2800e8fcb6f2109b6  numpy-1.19.4-cp36-cp36m-manylinux2014_aarch64.whl
13d166f77d6dc02c0a73c1101dd87fdf01339febec1030bd810dcd53fff3b0f1  numpy-1.19.4-cp36-cp36m-win32.whl
448ebb1b3bf64c0267d6b09a7cba26b5ae61b6d2dbabff7c91b660c7eccf2bdb  numpy-1.19.4-cp36-cp36m-win_amd64.whl
27d3f3b9e3406579a8af3a9f262f5339005dd25e0ecf3cf1559ff8a49ed5cbf2  numpy-1.19.4-cp37-cp37m-macosx_10_9_x86_64.whl
16c1b388cc31a9baa06d91a19366fb99ddbe1c7b205293ed072211ee5bac1ed2  numpy-1.19.4-cp37-cp37m-manylinux1_i686.whl
e5b6ed0f0b42317050c88022349d994fe72bfe35f5908617512cd8c8ef9da2a9  numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.whl
18bed2bcb39e3f758296584337966e68d2d5ba6aab7e038688ad53c8f889f757  numpy-1.19.4-cp37-cp37m-manylinux2010_i686.whl
fe45becb4c2f72a0907c1d0246ea6449fe7a9e2293bb0e11c4e9a32bb0930a15  numpy-1.19.4-cp37-cp37m-manylinux2010_x86_64.whl
6d7593a705d662be5bfe24111af14763016765f43cb6923ed86223f965f52387  numpy-1.19.4-cp37-cp37m-manylinux2014_aarch64.whl
6ae6c680f3ebf1cf7ad1d7748868b39d9f900836df774c453c11c5440bc15b36  numpy-1.19.4-cp37-cp37m-win32.whl
9eeb7d1d04b117ac0d38719915ae169aa6b61fca227b0b7d198d43728f0c879c  numpy-1.19.4-cp37-cp37m-win_amd64.whl
cb1017eec5257e9ac6209ac172058c430e834d5d2bc21961dceeb79d111e5909  numpy-1.19.4-cp38-cp38-macosx_10_9_x86_64.whl
edb01671b3caae1ca00881686003d16c2209e07b7ef8b7639f1867852b948f7c  numpy-1.19.4-cp38-cp38-manylinux1_i686.whl
f29454410db6ef8126c83bd3c968d143304633d45dc57b51252afbd79d700893  numpy-1.19.4-cp38-cp38-manylinux1_x86_64.whl
ec149b90019852266fec2341ce1db513b843e496d5a8e8cdb5ced1923a92faab  numpy-1.19.4-cp38-cp38-manylinux2010_i686.whl
1aeef46a13e51931c0b1cf8ae1168b4a55ecd282e6688fdb0a948cc5a1d5afb9  numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl
08308c38e44cc926bdfce99498b21eec1f848d24c302519e64203a8da99a97db  numpy-1.19.4-cp38-cp38-manylinux2014_aarch64.whl
5734bdc0342aba9dfc6f04920988140fb41234db42381cf7ccba64169f9fe7ac  numpy-1.19.4-cp38-cp38-win32.whl
09c12096d843b90eafd01ea1b3307e78ddd47a55855ad402b157b6c4862197ce  numpy-1.19.4-cp38-cp38-win_amd64.whl
e452dc66e08a4ce642a961f134814258a082832c78c90351b75c41ad16f79f63  numpy-1.19.4-cp39-cp39-macosx_10_9_x86_64.whl
a5d897c14513590a85774180be713f692df6fa8ecf6483e561a6d47309566f37  numpy-1.19.4-cp39-cp39-manylinux1_i686.whl
a09f98011236a419ee3f49cedc9ef27d7a1651df07810ae430a6b06576e0b414  numpy-1.19.4-cp39-cp39-manylinux1_x86_64.whl
50e86c076611212ca62e5a59f518edafe0c0730f7d9195fec718da1a5c2bb1fc  numpy-1.19.4-cp39-cp39-manylinux2010_i686.whl
f0d3929fe88ee1c155129ecd82f981b8856c5d97bcb0d5f23e9b4242e79d1de3  numpy-1.19.4-cp39-cp39-manylinux2010_x86_64.whl
c42c4b73121caf0ed6cd795512c9c09c52a7287b04d105d112068c1736d7c753  numpy-1.19.4-cp39-cp39-manylinux2014_aarch64.whl
8cac8790a6b1ddf88640a9267ee67b1aee7a57dfa2d2dd33999d080bc8ee3a0f  numpy-1.19.4-cp39-cp39-win32.whl
4377e10b874e653fe96985c05feed2225c912e328c8a26541f7fc600fb9c637b  numpy-1.19.4-cp39-cp39-win_amd64.whl
2a2740aa9733d2e5b2dfb33639d98a64c3b0f24765fed86b0fd2aec07f6a0a08  numpy-1.19.4-pp36-pypy36_pp73-manylinux2010_x86_64.whl
fe836a685d6838dbb3f603caef01183ea98e88febf4ce956a2ea484a75378413  numpy-1.19.4.tar.gz
141ec3a3300ab89c7f2b0775289954d193cc8edb621ea05f99db9cb181530512  numpy-1.19.4.zip
numpy -

Published by charris almost 4 years ago

NumPy 1.19.3 Release Notes

NumPy 1.19.3 is a small maintenace release with two major improvements:

  • Python 3.9 binary wheels on all supported platforms.
  • OpenBLAS fixes for Windows 10 version 2004 fmod bug.

This release supports Python 3.6-3.9 and is linked with OpenBLAS 3.7 to
avoid some of the fmod problems on Windows 10 version 2004. Microsoft is
aware of the problem and users should upgrade when the fix becomes
available, the fix here is limited in scope.

Contributors

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

  • Charles Harris
  • Chris Brown +
  • Daniel Vanzo +
  • E. Madison Bray +
  • Hugo van Kemenade +
  • Ralf Gommers
  • Sebastian Berg
  • @danbeibei +

Pull requests merged

A total of 10 pull requests were merged for this release.

  • #17298: BLD: set upper versions for build dependencies
  • #17336: BUG: Set deprecated fields to null in PyArray_InitArrFuncs
  • #17446: ENH: Warn on unsupported Python 3.10+
  • #17450: MAINT: Update test_requirements.txt.
  • #17522: ENH: Support for the NVIDIA HPC SDK nvfortran compiler
  • #17568: BUG: Cygwin Workaround for #14787 on affected platforms
  • #17647: BUG: Fix memory leak of buffer-info cache due to relaxed strides
  • #17652: MAINT: Backport openblas_support from master.
  • #17653: TST: Add Python 3.9 to the CI testing on Windows, Mac.
  • #17660: TST: Simplify source path names in test_extending.

Checksums

MD5

e5c6c782b2f112c32dcc38242521ec83  numpy-1.19.3-cp36-cp36m-macosx_10_9_x86_64.whl
02323e4a20e14e6f7cded1c55f6a0afe  numpy-1.19.3-cp36-cp36m-manylinux1_i686.whl
95f19f0b6c60a755a8454f22eb15f4d6  numpy-1.19.3-cp36-cp36m-manylinux1_x86_64.whl
e66cf5ea007a9b567be2b1a901b3d2e0  numpy-1.19.3-cp36-cp36m-manylinux2010_i686.whl
8c7d422f147392bd31f9e5bfc41a170e  numpy-1.19.3-cp36-cp36m-manylinux2010_x86_64.whl
da02c95dcf0acf7688aebaba7ba2750d  numpy-1.19.3-cp36-cp36m-manylinux2014_aarch64.whl
96e6ec05aca18516c8a5961c17a0cac6  numpy-1.19.3-cp36-cp36m-win32.whl
5aa36a829a7ce0a89e6fea502d4fa9ea  numpy-1.19.3-cp36-cp36m-win_amd64.whl
9143b46601bc0457dd42795a71ccd2f1  numpy-1.19.3-cp37-cp37m-macosx_10_9_x86_64.whl
ebe09a5e206db0de65154ef75377f963  numpy-1.19.3-cp37-cp37m-manylinux1_i686.whl
96008f5c61368d4cd967ecd474525df6  numpy-1.19.3-cp37-cp37m-manylinux1_x86_64.whl
e61aaf0c971b667c5fed8b5de3773c6d  numpy-1.19.3-cp37-cp37m-manylinux2010_i686.whl
74a9f9dab6f00bcf56096eaa910c48b9  numpy-1.19.3-cp37-cp37m-manylinux2010_x86_64.whl
18d911f7f462ee98333de9579adde331  numpy-1.19.3-cp37-cp37m-manylinux2014_aarch64.whl
f29846178b82bd4e8db1685a6e911336  numpy-1.19.3-cp37-cp37m-win32.whl
d372be03d9e57e5e0e1372bf39391241  numpy-1.19.3-cp37-cp37m-win_amd64.whl
c64b6538e07bca9d84287eebb3f3a01b  numpy-1.19.3-cp38-cp38-macosx_10_9_x86_64.whl
8ac57941de395be58376611b211ea571  numpy-1.19.3-cp38-cp38-manylinux1_i686.whl
81cc1993ac8da61fea677a7eb49989e8  numpy-1.19.3-cp38-cp38-manylinux1_x86_64.whl
9b2b05db89068d1f3f32a231f3953355  numpy-1.19.3-cp38-cp38-manylinux2010_i686.whl
d26cfa5ad6f4aa6beb42246efc45f565  numpy-1.19.3-cp38-cp38-manylinux2010_x86_64.whl
969a13b40fceb950021e297d5427f329  numpy-1.19.3-cp38-cp38-manylinux2014_aarch64.whl
f978618640860e72b91c522f4e4085af  numpy-1.19.3-cp38-cp38-win32.whl
af140a06f216c4100dc93c4135003d10  numpy-1.19.3-cp38-cp38-win_amd64.whl
fda3cdf138516040cad3de66496cf670  numpy-1.19.3-cp39-cp39-macosx_10_9_x86_64.whl
f683469f18abc8c84aa831d9e78f4eb6  numpy-1.19.3-cp39-cp39-manylinux1_i686.whl
26414c3db751ca4735f744b239bf9703  numpy-1.19.3-cp39-cp39-manylinux1_x86_64.whl
3164ede05e3a5d28dd8bd66aee56928c  numpy-1.19.3-cp39-cp39-manylinux2010_i686.whl
fc0b0c73c5508247d21beb42cf3fff66  numpy-1.19.3-cp39-cp39-manylinux2010_x86_64.whl
75097b6e154469c63c50c8f7eaf52a89  numpy-1.19.3-cp39-cp39-manylinux2014_aarch64.whl
cd4363bde576c997bf737f420a85683a  numpy-1.19.3-cp39-cp39-win32.whl
54fa685b3d30585763f59a7b2be7279b  numpy-1.19.3-cp39-cp39-win_amd64.whl
ed5bd59a064fe5b95699c222dc7a4638  numpy-1.19.3-pp36-pypy36_pp73-manylinux2010_x86_64.whl
b2d13ca1b8ff89a9289174a86b835165  numpy-1.19.3.tar.gz
7f014f9964987b59083c8dc4d158d45a  numpy-1.19.3.zip

SHA256

942d2cdcb362739908c26ce8dd88db6e139d3fa829dd7452dd9ff02cba6b58b2  numpy-1.19.3-cp36-cp36m-macosx_10_9_x86_64.whl
efd656893171bbf1331beca4ec9f2e74358fc732a2084f664fd149cc4b3441d2  numpy-1.19.3-cp36-cp36m-manylinux1_i686.whl
1a307bdd3dd444b1d0daa356b5f4c7de2e24d63bdc33ea13ff718b8ec4c6a268  numpy-1.19.3-cp36-cp36m-manylinux1_x86_64.whl
9d08d84bb4128abb9fbd9f073e5c69f70e5dab991a9c42e5b4081ea5b01b5db0  numpy-1.19.3-cp36-cp36m-manylinux2010_i686.whl
7197ee0a25629ed782c7bd01871ee40702ffeef35bc48004bc2fdcc71e29ba9d  numpy-1.19.3-cp36-cp36m-manylinux2010_x86_64.whl
8edc4d687a74d0a5f8b9b26532e860f4f85f56c400b3a98899fc44acb5e27add  numpy-1.19.3-cp36-cp36m-manylinux2014_aarch64.whl
522053b731e11329dd52d258ddf7de5288cae7418b55e4b7d32f0b7e31787e9d  numpy-1.19.3-cp36-cp36m-win32.whl
eefc13863bf01583a85e8c1121a901cc7cb8f059b960c4eba30901e2e6aba95f  numpy-1.19.3-cp36-cp36m-win_amd64.whl
6ff88bcf1872b79002569c63fe26cd2cda614e573c553c4d5b814fb5eb3d2822  numpy-1.19.3-cp37-cp37m-macosx_10_9_x86_64.whl
e080087148fd70469aade2abfeadee194357defd759f9b59b349c6192aba994c  numpy-1.19.3-cp37-cp37m-manylinux1_i686.whl
50f68ebc439821b826823a8da6caa79cd080dee2a6d5ab9f1163465a060495ed  numpy-1.19.3-cp37-cp37m-manylinux1_x86_64.whl
b9074d062d30c2779d8af587924f178a539edde5285d961d2dfbecbac9c4c931  numpy-1.19.3-cp37-cp37m-manylinux2010_i686.whl
463792a249a81b9eb2b63676347f996d3f0082c2666fd0604f4180d2e5445996  numpy-1.19.3-cp37-cp37m-manylinux2010_x86_64.whl
ea6171d2d8d648dee717457d0f75db49ad8c2f13100680e284d7becf3dc311a6  numpy-1.19.3-cp37-cp37m-manylinux2014_aarch64.whl
0ee77786eebbfa37f2141fd106b549d37c89207a0d01d8852fde1c82e9bfc0e7  numpy-1.19.3-cp37-cp37m-win32.whl
271139653e8b7a046d11a78c0d33bafbddd5c443a5b9119618d0652a4eb3a09f  numpy-1.19.3-cp37-cp37m-win_amd64.whl
e983cbabe10a8989333684c98fdc5dd2f28b236216981e0c26ed359aaa676772  numpy-1.19.3-cp38-cp38-macosx_10_9_x86_64.whl
d78294f1c20f366cde8a75167f822538a7252b6e8b9d6dbfb3bdab34e7c1929e  numpy-1.19.3-cp38-cp38-manylinux1_i686.whl
199bebc296bd8a5fc31c16f256ac873dd4d5b4928dfd50e6c4995570fc71a8f3  numpy-1.19.3-cp38-cp38-manylinux1_x86_64.whl
dffed17848e8b968d8d3692604e61881aa6ef1f8074c99e81647ac84f6038535  numpy-1.19.3-cp38-cp38-manylinux2010_i686.whl
5ea4401ada0d3988c263df85feb33818dc995abc85b8125f6ccb762009e7bc68  numpy-1.19.3-cp38-cp38-manylinux2010_x86_64.whl
604d2e5a31482a3ad2c88206efd43d6fcf666ada1f3188fd779b4917e49b7a98  numpy-1.19.3-cp38-cp38-manylinux2014_aarch64.whl
a2daea1cba83210c620e359de2861316f49cc7aea8e9a6979d6cb2ddab6dda8c  numpy-1.19.3-cp38-cp38-win32.whl
dfdc8b53aa9838b9d44ed785431ca47aa3efaa51d0d5dd9c412ab5247151a7c4  numpy-1.19.3-cp38-cp38-win_amd64.whl
9f7f56b5e85b08774939622b7d45a5d00ff511466522c44fc0756ac7692c00f2  numpy-1.19.3-cp39-cp39-macosx_10_9_x86_64.whl
8802d23e4895e0c65e418abe67cdf518aa5cbb976d97f42fd591f921d6dffad0  numpy-1.19.3-cp39-cp39-manylinux1_i686.whl
c4aa79993f5d856765819a3651117520e41ac3f89c3fc1cb6dee11aa562df6da  numpy-1.19.3-cp39-cp39-manylinux1_x86_64.whl
51e8d2ae7c7e985c7bebf218e56f72fa93c900ad0c8a7d9fbbbf362f45710f69  numpy-1.19.3-cp39-cp39-manylinux2010_i686.whl
50d3513469acf5b2c0406e822d3f314d7ac5788c2b438c24e5dd54d5a81ef522  numpy-1.19.3-cp39-cp39-manylinux2010_x86_64.whl
741d95eb2b505bb7a99fbf4be05fa69f466e240c2b4f2d3ddead4f1b5f82a5a5  numpy-1.19.3-cp39-cp39-manylinux2014_aarch64.whl
1ea7e859f16e72ab81ef20aae69216cfea870676347510da9244805ff9670170  numpy-1.19.3-cp39-cp39-win32.whl
83af653bb92d1e248ccf5fdb05ccc934c14b936bcfe9b917dc180d3f00250ac6  numpy-1.19.3-cp39-cp39-win_amd64.whl
9a0669787ba8c9d3bb5de5d9429208882fb47764aa79123af25c5edc4f5966b9  numpy-1.19.3-pp36-pypy36_pp73-manylinux2010_x86_64.whl
9179d259a9bc53ed7b153d31fc3156d1ca560d61079f53191cf177c3efc4a498  numpy-1.19.3.tar.gz
35bf5316af8dc7c7db1ad45bec603e5fb28671beb98ebd1d65e8059efcfd3b72  numpy-1.19.3.zip
numpy -

Published by charris about 4 years ago

NumPy 1.19.2 Release Notes

NumPy 1.19.2 fixes several bugs, prepares for the upcoming Cython 3.x
release. and pins setuptools to keep distutils working while upstream
modifications are ongoing. The aarch64 wheels are built with the latest
manylinux2014 release that fixes the problem of differing page sizes
used by different linux distros.

This release supports Python 3.6-3.8. Cython >= 0.29.21 needs to be
used when building with Python 3.9 for testing purposes.

There is a known problem with Windows 10 version=2004 and OpenBLAS svd
that we are trying to debug. If you are running that Windows version you
should use a NumPy version that links to the MKL library, earlier
Windows versions are fine.

Improvements

Add NumPy declarations for Cython 3.0 and later

The pxd declarations for Cython 3.0 were improved to avoid using
deprecated NumPy C-API features. Extension modules built with Cython
3.0+ that use NumPy can now set the C macro
NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION to avoid C compiler warnings
about deprecated API usage.

Contributors

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

  • Charles Harris
  • Matti Picus
  • Pauli Virtanen
  • Philippe Ombredanne +
  • Sebastian Berg
  • Stefan Behnel +
  • Stephan Loyd +
  • Zac Hatfield-Dodds

Pull requests merged

A total of 9 pull requests were merged for this release.

  • #16959: TST: Change aarch64 to arm64 in travis.yml.
  • #16998: MAINT: Configure hypothesis in np.test() for determinism,...
  • #17000: BLD: pin setuptools < 49.2.0
  • #17015: ENH: Add NumPy declarations to be used by Cython 3.0+
  • #17125: BUG: Remove non-threadsafe sigint handling from fft calculation
  • #17243: BUG: core: fix ilp64 blas dot/vdot/... for strides > int32 max
  • #17244: DOC: Use SPDX license expressions with correct license
  • #17245: DOC: Fix the link to the quick-start in the old API functions
  • #17272: BUG: fix pickling of arrays larger than 2GiB

Checksums

MD5

b74295cbb5b1c98f46f26e13c0fca0ea  numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl
3e307eca6c448bbe30e4c1dc99824642  numpy-1.19.2-cp36-cp36m-manylinux1_i686.whl
bfe6c2053a7a792097df912d1175ef7e  numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl
3b61953b421460abc7d2ecb4df4060bc  numpy-1.19.2-cp36-cp36m-manylinux2010_i686.whl
7c442b7c5af62bd5be669bf6c360e114  numpy-1.19.2-cp36-cp36m-manylinux2010_x86_64.whl
f6eaf46804f0d66c123fa7ff728b178e  numpy-1.19.2-cp36-cp36m-manylinux2014_aarch64.whl
30bbe0bcd774ab483c7494d1cf827199  numpy-1.19.2-cp36-cp36m-win32.whl
cf54372ccde7de333d7b69cd16abfa70  numpy-1.19.2-cp36-cp36m-win_amd64.whl
285d0fc2986bf4a050523d98f47f2175  numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl
a0901b44347ba39154058a26a9fc8e77  numpy-1.19.2-cp37-cp37m-manylinux1_i686.whl
21bfe38bdb317ad4af4959279dd90fde  numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl
ec32c124ace9c08399e88b8eca6d7475  numpy-1.19.2-cp37-cp37m-manylinux2010_i686.whl
0d5cae15043a8172a1b8a478b7c98119  numpy-1.19.2-cp37-cp37m-manylinux2010_x86_64.whl
c7e9905e721dc31a666f59e30e37aa0d  numpy-1.19.2-cp37-cp37m-manylinux2014_aarch64.whl
ad32d083e641f2cf1a50fe821f3673a7  numpy-1.19.2-cp37-cp37m-win32.whl
a243b3e844507e424e828430010612c1  numpy-1.19.2-cp37-cp37m-win_amd64.whl
8f4d5df29d4fbf21bf8c4c976595214f  numpy-1.19.2-cp38-cp38-macosx_10_9_x86_64.whl
7b003b2fd18125f3956eb3a182ab0d7f  numpy-1.19.2-cp38-cp38-manylinux1_i686.whl
e7b8242ee7a79778c6df64772fde5885  numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl
e89e05d24b6f898005e03ba3f01c0641  numpy-1.19.2-cp38-cp38-manylinux2010_i686.whl
4cffe85a99bfe08d47d7f1f655142be4  numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl
39e363f10f0a9af0a8506699118d3aaf  numpy-1.19.2-cp38-cp38-manylinux2014_aarch64.whl
13ccd230fefdd56a1679fd72fd0d8a55  numpy-1.19.2-cp38-cp38-win32.whl
a3d85f244058882b90140468b86f2e2e  numpy-1.19.2-cp38-cp38-win_amd64.whl
ef4cf0675f801a4bf339348fc1843f50  numpy-1.19.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl
471156268abd8686e39e811003726ab1  numpy-1.19.2.tar.gz
2d011c5422596d742784ba5c2204bc5d  numpy-1.19.2.zip

SHA256

b594f76771bc7fc8a044c5ba303427ee67c17a09b36e1fa32bde82f5c419d17a  numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl
e6ddbdc5113628f15de7e4911c02aed74a4ccff531842c583e5032f6e5a179bd  numpy-1.19.2-cp36-cp36m-manylinux1_i686.whl
3733640466733441295b0d6d3dcbf8e1ffa7e897d4d82903169529fd3386919a  numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl
4339741994c775396e1a274dba3609c69ab0f16056c1077f18979bec2a2c2e6e  numpy-1.19.2-cp36-cp36m-manylinux2010_i686.whl
7c6646314291d8f5ea900a7ea9c4261f834b5b62159ba2abe3836f4fa6705526  numpy-1.19.2-cp36-cp36m-manylinux2010_x86_64.whl
7118f0a9f2f617f921ec7d278d981244ba83c85eea197be7c5a4f84af80a9c3c  numpy-1.19.2-cp36-cp36m-manylinux2014_aarch64.whl
9a3001248b9231ed73894c773142658bab914645261275f675d86c290c37f66d  numpy-1.19.2-cp36-cp36m-win32.whl
967c92435f0b3ba37a4257c48b8715b76741410467e2bdb1097e8391fccfae15  numpy-1.19.2-cp36-cp36m-win_amd64.whl
d526fa58ae4aead839161535d59ea9565863bb0b0bdb3cc63214613fb16aced4  numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl
eb25c381d168daf351147713f49c626030dcff7a393d5caa62515d415a6071d8  numpy-1.19.2-cp37-cp37m-manylinux1_i686.whl
62139af94728d22350a571b7c82795b9d59be77fc162414ada6c8b6a10ef5d02  numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl
0c66da1d202c52051625e55a249da35b31f65a81cb56e4c69af0dfb8fb0125bf  numpy-1.19.2-cp37-cp37m-manylinux2010_i686.whl
2117536e968abb7357d34d754e3733b0d7113d4c9f1d921f21a3d96dec5ff716  numpy-1.19.2-cp37-cp37m-manylinux2010_x86_64.whl
54045b198aebf41bf6bf4088012777c1d11703bf74461d70cd350c0af2182e45  numpy-1.19.2-cp37-cp37m-manylinux2014_aarch64.whl
aba1d5daf1144b956bc87ffb87966791f5e9f3e1f6fab3d7f581db1f5b598f7a  numpy-1.19.2-cp37-cp37m-win32.whl
addaa551b298052c16885fc70408d3848d4e2e7352de4e7a1e13e691abc734c1  numpy-1.19.2-cp37-cp37m-win_amd64.whl
58d66a6b3b55178a1f8a5fe98df26ace76260a70de694d99577ddeab7eaa9a9d  numpy-1.19.2-cp38-cp38-macosx_10_9_x86_64.whl
59f3d687faea7a4f7f93bd9665e5b102f32f3fa28514f15b126f099b7997203d  numpy-1.19.2-cp38-cp38-manylinux1_i686.whl
cebd4f4e64cfe87f2039e4725781f6326a61f095bc77b3716502bed812b385a9  numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl
c35a01777f81e7333bcf276b605f39c872e28295441c265cd0c860f4b40148c1  numpy-1.19.2-cp38-cp38-manylinux2010_i686.whl
d7ac33585e1f09e7345aa902c281bd777fdb792432d27fca857f39b70e5dd31c  numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl
04c7d4ebc5ff93d9822075ddb1751ff392a4375e5885299445fcebf877f179d5  numpy-1.19.2-cp38-cp38-manylinux2014_aarch64.whl
51ee93e1fac3fe08ef54ff1c7f329db64d8a9c5557e6c8e908be9497ac76374b  numpy-1.19.2-cp38-cp38-win32.whl
1669ec8e42f169ff715a904c9b2105b6640f3f2a4c4c2cb4920ae8b2785dac65  numpy-1.19.2-cp38-cp38-win_amd64.whl
0bfd85053d1e9f60234f28f63d4a5147ada7f432943c113a11afcf3e65d9d4c8  numpy-1.19.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl
74d0cf50aa28af81874aca3e67560945afd783b2a006913577d6cddc35a824a6  numpy-1.19.2.tar.gz
0d310730e1e793527065ad7dde736197b705d0e4c9999775f212b03c44a8484c  numpy-1.19.2.zip