The fundamental package for scientific computing with Python.
OTHER License
Bot releases are hidden (Show)
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:
quantile
, percentile
, and related functions. TheThese 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.
Using the strings "Bytes0"
, "Datetime64"
, "Str0"
, "Uint32"
,
and "Uint64"
as a dtype will now raise a TypeError
.
(gh-19539)
loads
, ndfromtxt
, and mafromtxt
in npyionumpy.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)
The misspelled keyword argument delimitor
of
numpy.ma.mrecords.fromtextfile()
has been changed to delimiter
,
using it will emit a deprecation warning.
(gh-19921)
kth
values to (arg-)partition has been deprecatednumpy.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)
np.MachAr
class has been deprecatedThe 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)
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)
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 functionWhen 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 support has been dropped. This is rather strict, there are
changes that require Python >= 3.8.
(gh-19665)
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)
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)
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)
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)
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)
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)
This feature depends on Doxygen in
the generation process and on
Breathe to integrate it
with Sphinx.
(gh-18884)
c_intp
precision via a mypy pluginThe 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 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 integerComputes 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)
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)
windows/arm64
targetnumpy
added support for windows/arm64 target. Please note OpenBLAS
support is not yet available for windows/arm64 target.
(gh-19513)
LoongArch is a new instruction set, numpy compilation failure on
LoongArch architecture, so add the commit.
(gh-19527)
.clang-format
file has been addedClang-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)
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-subscriptableMimicking 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)
ctypeslib.load_library
can now take any path-like objectAll 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)
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 inputsnumpy.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
implementationsnumpy.fromregex
now accepts objects implementing the
__fspath__<os.PathLike>
protocol, e.g. pathlib.Path
.
(gh-19680)
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)
nan<x>
functionsA 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:
initial
& where
initial
& where
keepdims
& out
keepdims
& out
initial
& where
initial
& where
where
where
where
(gh-20027)
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)
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)
Update the OpenBLAS used in testing and in wheels to v0.3.17
(gh-19462)
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
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 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:
quantile
, percentile
, and related functions. TheThese 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.
Using the strings "Bytes0"
, "Datetime64"
, "Str0"
, "Uint32"
,
and "Uint64"
as a dtype will now raise a TypeError
.
(gh-19539)
loads
, ndfromtxt
, and mafromtxt
in npyionumpy.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)
The misspelled keyword argument delimitor
of
numpy.ma.mrecords.fromtextfile()
has been changed to delimiter
,
using it will emit a deprecation warning.
(gh-19921)
kth
values to (arg-)partition has been deprecatednumpy.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)
np.MachAr
class has been deprecatedThe 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)
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)
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 functionWhen 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 support has been dropped. This is rather strict, there are
changes that require Python >= 3.8.
(gh-19665)
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)
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)
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)
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)
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)
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)
This feature depends on Doxygen in
the generation process and on
Breathe to integrate it
with Sphinx.
(gh-18884)
c_intp
precision via a mypy pluginThe 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 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 integerComputes 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)
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)
windows/arm64
targetnumpy
added support for windows/arm64 target. Please note OpenBLAS
support is not yet available for windows/arm64 target.
(gh-19513)
LoongArch is a new instruction set, numpy compilation failure on
LoongArch architecture, so add the commit.
(gh-19527)
.clang-format
file has been addedClang-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)
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-subscriptableMimicking 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)
ctypeslib.load_library
can now take any path-like objectAll 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)
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 inputsnumpy.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
implementationsnumpy.fromregex
now accepts objects implementing the
__fspath__<os.PathLike>
protocol, e.g. pathlib.Path
.
(gh-19680)
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)
nan<x>
functionsA 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:
initial
& where
initial
& where
keepdims
& out
keepdims
& out
initial
& where
initial
& where
where
where
where
(gh-20027)
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)
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)
Update the OpenBLAS used in testing and in wheels to v0.3.17
(gh-19462)
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
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 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:
quantile
, percentile
, and related functions. TheThese 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.
Using the strings "Bytes0"
, "Datetime64"
, "Str0"
, "Uint32"
,
and "Uint64"
as a dtype will now raise a TypeError
.
(gh-19539)
loads
, ndfromtxt
, and mafromtxt
in npyionumpy.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)
The misspelled keyword argument delimitor
of
numpy.ma.mrecords.fromtextfile()
has been changed to delimiter
,
using it will emit a deprecation warning.
(gh-19921)
kth
values to (arg-)partition has been deprecatednumpy.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)
np.MachAr
class has been deprecatedThe 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)
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)
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 functionWhen 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 support has been dropped. This is rather strict, there are
changes that require Python >= 3.8.
(gh-19665)
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)
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)
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)
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)
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)
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)
This feature depends on Doxygen in
the generation process and on
Breathe to integrate it
with Sphinx.
(gh-18884)
c_intp
precision via a mypy pluginThe 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 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 integerComputes 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)
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)
windows/arm64
targetnumpy
added support for windows/arm64 target. Please note OpenBLAS
support is not yet available for windows/arm64 target.
(gh-19513)
LoongArch is a new instruction set, numpy compilation failure on
LoongArch architecture, so add the commit.
(gh-19527)
.clang-format
file has been addedClang-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)
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-subscriptableMimicking 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)
ctypeslib.load_library
can now take any path-like objectAll 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)
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 inputsnumpy.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
implementationsnumpy.fromregex
now accepts objects implementing the
__fspath__<os.PathLike>
protocol, e.g. pathlib.Path
.
(gh-19680)
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)
nan<x>
functionsA 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:
initial
& where
initial
& where
keepdims
& out
keepdims
& out
initial
& where
initial
& where
where
where
where
(gh-20027)
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)
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)
Update the OpenBLAS used in testing and in wheels to v0.3.17
(gh-19462)
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
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
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.
A total of 7 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 9 pull requests were merged for this release.
dtype
in type stubVOID_nonzero
could sometimes mutate alignment flagArrayterator
typing test failure95486a3ed027c926fb3fc279db6d843e 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
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
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:
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.
A total of 7 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 8 pull requests were merged for this release.
`generic
/ndarray
methods9acea9630856659ba48fdb582ecc37b4 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
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
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.
A total of 10 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 18 pull requests were merged for this release.
<3.11
numpy.typing
could raise-Werror
isn't applicable...runtest.py
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
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
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.
A total of 11 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 26 pull requests were merged for this release.
NotImplemented
with typing.Any
ndarray.real
and imag
"dtype[Any]"
with dtype
in the definiton of...numpy.f2py.get_include
functionnp.number
subclassesprint()
's in distutils template handlingGenericAlias
test failure for python 3.9.0d88af78c155cb92ce5535724ed13ed73 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
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
The NumPy 1.21.0 release highlights are
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 .
-O3
results in many wrong warnings when running the tests.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)
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)
.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)
numpy.convolve
and numpy.correlate
are deprecatednumpy.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 deprecatednp.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)
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)
ndarray.ctypes
methods have been deprecatedFour 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)
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)
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)
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 validationNumPy 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 argumentsPreviously, 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)
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 pathsThe 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)
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)
dtype
and signature
arguments in ufuncsThe 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)
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)
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)
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)
numpy.number
precisionsA 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)
numpy.number
subclassesThe 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)
min_digits
argument for printing float valuesA 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)
numpy.f2py
can now parse abstract interface blocks.
(gh-18695)
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)
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"}).
>>> 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)
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 improvedThe 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)
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)
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)
np.save
and np.load
for small arraysnp.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)
numpy.piecewise
output class now matches the input classWhen 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)
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)
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
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
The NumPy 1.21.0 release highlights are
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.
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)
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)
numpy.convolve
and numpy.correlate
are deprecatednumpy.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 deprecatednp.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)
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)
ndarray.ctypes
methods have been deprecatedFour 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)
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)
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)
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 validationNumPy 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 argumentsPreviously, 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)
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 pathsThe 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)
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)
dtype
and signature
arguments in ufuncsThe 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)
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)
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)
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)
numpy.number
precisionsA 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)
numpy.number
subclassesThe 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)
min_digits
argument for printing float valuesA 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)
numpy.f2py
can now parse abstract interface blocks.
(gh-18695)
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)
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"}).
>>> 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)
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 improvedThe 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)
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)
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)
np.save
and np.load
for small arraysnp.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)
numpy.piecewise
output class now matches the input classWhen 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)
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)
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
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
The NumPy 1.21.0 release highlights are
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.
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)
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)
numpy.convolve
and numpy.correlate
are deprecatednumpy.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 deprecatednp.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)
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)
ndarray.ctypes
methods have been deprecatedFour 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)
Any promotion of numbers and strings is deprecated and will give a
FutureWarning
the main affected functionalities are:
numpy.promote_types
andnumpy.result_type
which will raise an error in thisnumpy.concatenate
will raise an error whendtype="S"
tonumpy.array
and related functions will startobject
arrays because these functions use object
as aThis 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)
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 validationNumPy 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 argumentsPreviously, 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)
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 pathsThe 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)
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)
dtype
and signature
arguments in ufuncsThe 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)
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)
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)
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)
numpy.number
precisionsA 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)
numpy.number
subclassesThe 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)
min_digits
argument for printing float valuesA 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)
numpy.f2py
can now parse abstract interface blocks.
(gh-18695)
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)
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"}).
>>> 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)
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 improvedThe 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)
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)
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)
np.save
and np.load
for small arraysnp.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)
numpy.piecewise
output class now matches the input classWhen 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)
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)
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
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 1.20.3 is a bugfix release containing several fixes merged to the
main branch after the NumPy 1.20.2 release.
A total of 7 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 15 pull requests were merged for this release.
datetime64
missing type overload for datetime.date
...__all__
in favor of explicit re-exports-faltivec
on macOS702d0185042f1ff9a5d7e72a29f4e1c0 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
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 1,20.2 is a bugfix release containing several fixes merged to the
main branch after the NumPy 1.20.1 release.
A total of 7 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 20 pull requests were merged for this release.
diagflat
could overflow on windows or 32-bit platformscomplex_double_from_pyobj
.like=
overrides are used__getitem__
, __mul__
and...where
keyword for np.mean
& np.var
methodsa95718df123e0726a7dac5043050b251 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
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 1.20.1 is a rapid bugfix release fixing several bugs and
regressions reported after the 1.20.0 release.
random.shuffle
regression is fixed.A total of 8 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 15 pull requests were merged for this release.
numpy.__init__.py
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
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
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
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 arraysnumpy.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
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)
np.int
is deprecatedFor 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. Thisnp.int_
or int
(the default), but be aware that it depends onnp.cint
(int), np.int_
(long), np.longlong
.np.intp
which is 32bit on 32bit machines 64bit on 64bit machines.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)
shape=None
to functions with a non-optional shape argument is deprecatedPreviously, 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)
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)
mode
and searchside
are deprecatedInexact 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)
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 matrixnp.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)
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)
ndincr
method of ndindex
is deprecatedThe documentation has warned against using this function since NumPy
1.8. Use next(it)
instead of it.ndincr()
.
(gh-17233)
__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:
shapely
will allow conversion to an array-like usingline.coords
rather than np.asarray(line)
. Users may work aroundUnfortunately, 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)
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)
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)
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)
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).
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)
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.
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 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)
numpy.broadcast\_arrays
will export readonly buffersIn 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)
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)
operator.concat
function now raises TypeError for array argumentsThe 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 ABCPolyBaseAn 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 TypeErrorFloat 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 arraysPreviously, 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 inputPreviously,
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)
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)
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)
Some byte strings previously returned by f2py generated code may now be
unicode strings. This results from the ongoing Python2 -> Python3
cleanup.
(gh-17068)
__array_interface__["data"]
tuple must be an integerThis 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)
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)
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)
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)
PyArray_DescrCheck
macro is modifiedThe 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.
np.ndarray
and np.void_
changedThe 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)
where
keyword argument for numpy.all
and numpy.any
functionsThe 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
functionsThe 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)
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 arrayDtypeLike
: for objects that can be coerced to a dtype(gh-16515)
numpy.typing
is accessible at runtimeThe 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)
__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.pyCurrently running mypy with the NumPy stubs configured requires either:
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)
[~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)
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)
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)
__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)
Apple no longer supports Accelerate. Remove it.
(gh-15759)
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)
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)
Callback functions in f2py are now thread safe.
(gh-16519)
[numpy.rec.fromfile]{.title-ref} can now use file-like objects, for
instance :pyio.BytesIO
{.interpreted-text role="class"}
(gh-16675)
This allows SciPy to be built on AIX.
(gh-16710)
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)
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 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)
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 requiredmin
which provides the minimum--cpu-dispatch
to specify the dispatched set of additionalmax -xop -fma4
which enables--disable-optimization
to explicitly disable the whole newNPY_DISABLE_OPTIMIZATION
which it can be used as guardAdvanced 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__cpu_dispatch__
a list contains the dispatched set ofPrint the supported CPU features during the run of PytestTester
(gh-13516)
divmod(1., 0.)
and related functionsThe 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 floorWhen 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)
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
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 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.
A total of 8 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 11 pull requests were merged for this release.
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
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
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
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} 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)
np.int
is deprecatedFor 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)
shape=None
to functions with a non-optional shape argument is deprecatedPreviously, 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)
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)
mode
and searchside
are deprecatedInexact 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)
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 matrixnp.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)
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)
ndincr
method of ndindex
is deprecatedThe documentation has warned against using this function since NumPy
1.8. Use next(it)
instead of it.ndincr()
.
(gh-17233)
__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:
shapely
will allow conversion to an array-like usingline.coords
rather than np.asarray(line)
. Users may work aroundUnfortunately, 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)
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)
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)
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)
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).
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)
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.
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 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)
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)
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)
operator.concat
function now raises TypeError for array argumentsThe 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 ABCPolyBaseAn 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 TypeErrorFloat 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 arraysPreviously, [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 inputPreviously,
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)
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)
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)
Some byte strings previously returned by f2py generated code may now be
unicode strings. This results from the ongoing Python2 -> Python3
cleanup.
(gh-17068)
__array_interface__["data"]
tuple must be an integerThis 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)
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)
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)
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)
PyArray_DescrCheck
macro is modifiedThe 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.
np.ndarray
and np.void_
changedThe 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)
where
keyword argument for numpy.all
and numpy.any
functionsThe 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
functionsThe 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)
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 arrayDtypeLike
: for objects that can be coerced to a dtype(gh-16515)
numpy.typing
is accessible at runtimeThe 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)
__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.pyCurrently running mypy with the NumPy stubs configured requires either:
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)
[~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)
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)
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)
__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)
Apple no longer supports Accelerate. Remove it.
(gh-15759)
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)
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)
Callback functions in f2py are now thread safe.
(gh-16519)
[numpy.rec.fromfile]{.title-ref} can now use file-like objects, for
instance :pyio.BytesIO
{.interpreted-text role="class"}
(gh-16675)
This allows SciPy to be built on AIX.
(gh-16710)
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)
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 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)
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 requiredmin
which provides the minimum--cpu-dispatch
to specify the dispatched set of additionalmax -xop -fma4
which enables--disable-optimization
to explicitly disable the whole newNPY_DISABLE_OPTIMIZATION
which it can be used as guardAdvanced 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__cpu_dispatch__
a list contains the dispatched set ofPrint the supported CPU features during the run of PytestTester
(gh-13516)
divmod(1., 0.)
and related functionsThe 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 floorWhen 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)
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
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
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
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} 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)
np.int
is deprecatedFor 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)
shape=None
to functions with a non-optional shape argument is deprecatedPreviously, 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)
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)
mode
and searchside
are deprecatedInexact 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)
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 matrixnp.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)
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)
ndincr
method of ndindex
is deprecatedThe documentation has warned against using this function since NumPy
1.8. Use next(it)
instead of it.ndincr()
.
(gh-17233)
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)
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)
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)
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)
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.
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 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)
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)
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)
operator.concat
function now raises TypeError for array argumentsThe 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 ABCPolyBaseAn 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 TypeErrorFloat 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 arraysPreviously, [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 inputPreviously,
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)
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)
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)
Some byte strings previously returned by f2py generated code may now be
unicode strings. This results from the ongoing Python2 -> Python3
cleanup.
(gh-17068)
__array_interface__["data"]
tuple must be an integerThis 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)
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)
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)
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)
np.ndarray
and np.void_
changedThe 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)
where
keyword argument for numpy.all
and numpy.any
functionsThe 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
functionsThe 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)
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 arrayDtypeLike
: for objects that can be coerced to a dtype(gh-16515)
numpy.typing
is accessible at runtimeThe 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)
__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.pyCurrently running mypy with the NumPy stubs configured requires either:
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)
[~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)
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)
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)
__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)
Apple no longer supports Accelerate. Remove it.
(gh-15759)
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)
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)
Callback functions in f2py are now thread safe.
(gh-16519)
[numpy.rec.fromfile]{.title-ref} can now use file-like objects, for
instance :pyio.BytesIO
{.interpreted-text role="class"}
(gh-16675)
This allows SciPy to be built on AIX.
(gh-16710)
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)
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 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)
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 requiredmin
which provides the minimum--cpu-dispatch
to specify the dispatched set of additionalmax -xop -fma4
which enables--disable-optimization
to explicitly disable the whole newNPY_DISABLE_OPTIMIZATION
which it can be used as guardAdvanced 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__cpu_dispatch__
a list contains the dispatched set ofPrint the supported CPU features during the run of PytestTester
(gh-13516)
divmod(1., 0.)
and related functionsThe 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 floorWhen 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)
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
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 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
A total of 1 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 2 pull requests were merged for this release.
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
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 1.19.3 is a small maintenace release with two major improvements:
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.
A total of 8 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 10 pull requests were merged for this release.
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
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 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.
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.
A total of 8 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
A total of 9 pull requests were merged for this release.
np.test()
for determinism,...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
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