Numpy

Latest version: v2.2.4

Safety actively analyzes 726274 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 13 of 24

1.20.2

Not secure
==========================

1.20.1

Not secure
regressions reported after the 1.20.0 release.

Highlights
----------

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

Contributors
------------

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

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

Pull requests merged
--------------------

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

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

Checksums
---------

MD5

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

SHA256

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

1.20.0

Not secure
==========================

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

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

New functions
-------------

The random.Generator class has a new `permuted` function.

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

([gh-15121](https://github.com/numpy/numpy/pull/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](https://github.com/numpy/numpy/pull/17394))

[numpy.broadcast\_shapes]{.title-ref} is a new user-facing function

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

{.python}
>>> 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](https://github.com/numpy/numpy/pull/17535))

Deprecations
------------

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

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

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

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

Deprecated name Identical to Possibly intended numpy type
----------------- ------------------------------- -------------------------------------------------------------------------------------------
`numpy.bool` `bool` [numpy.bool\_]{.title-ref}
`numpy.int` `int` [numpy.int\_]{.title-ref} (default int dtype), [numpy.cint]{.title-ref} (C `int`)
`numpy.float` `float` [numpy.float\_]{.title-ref}, [numpy.double]{.title-ref} (equivalent)
`numpy.complex` `complex` [numpy.complex\_]{.title-ref}, [numpy.cdouble]{.title-ref} (equivalent)
`numpy.object` `object` [numpy.object\_]{.title-ref}
`numpy.str` `str` [numpy.str\_]{.title-ref}
`numpy.long` `int` (`long` on Python 2) [numpy.int\_]{.title-ref} (C `long`), [numpy.longlong]{.title-ref} (largest integer type)
`numpy.unicode` `str` (`unicode` on Python 2) [numpy.unicode\_]{.title-ref}

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

([gh-14882](https://github.com/numpy/numpy/pull/14882))

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

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

([gh-15886](https://github.com/numpy/numpy/pull/15886))

Indexing errors will be reported even when index result is empty

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

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

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

([gh-15900](https://github.com/numpy/numpy/pull/15900))

Inexact matches for `mode` and `searchside` are deprecated

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

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

([gh-16056](https://github.com/numpy/numpy/pull/16056))

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

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

([gh-16156](https://github.com/numpy/numpy/pull/16156))

`outer` and `ufunc.outer` deprecated for matrix

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

([gh-16232](https://github.com/numpy/numpy/pull/16232))

Further Numeric Style types Deprecated

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

([gh-16554](https://github.com/numpy/numpy/pull/16554))

The `ndincr` method of `ndindex` is deprecated

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

([gh-17233](https://github.com/numpy/numpy/pull/17233))

Future Changes
--------------

Arrays cannot be using subarray dtypes

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

For such a `dtype` the following behaviour is true:

res = np.array(arr, dtype)

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

But `res` is filled using the logic:

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

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

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

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

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

([gh-17596](https://github.com/numpy/numpy/pull/17596))

Expired deprecations
--------------------

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

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

([gh-16554](https://github.com/numpy/numpy/pull/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](https://github.com/numpy/numpy/pull/17116))

Financial functions removed

In accordance with NEP 32, the financial functions are removed from
NumPy 1.20. The functions that have been removed are `fv`, `ipmt`,
`irr`, `mirr`, `nper`, `npv`, `pmt`, `ppmt`, `pv`, and `rate`. These
functions are available in the
[numpy\_financial](https://pypi.org/project/numpy-financial) library.

([gh-17067](https://github.com/numpy/numpy/pull/17067))

Compatibility notes
-------------------

Same kind casting in concatenate with `axis=None`

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

([gh-16134](https://github.com/numpy/numpy/pull/16134))

NumPy Scalars are cast when assigned to arrays

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

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

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

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

At this time, NumPy retains the behaviour for:

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

The above changes do not affect Python scalars:

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

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

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

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

Array coercion changes when Strings and other types are mixed

When strings and other types are mixed, such as:

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

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

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

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

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

Array coercion restructure

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

np.array([array_like1])

Things will now be more consistent with:

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

This could potentially subtly change output for badly defined
array-likes. We are not aware of any such case where the results were
not clearly incorrect previously.

([gh-16200](https://github.com/numpy/numpy/pull/16200))

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

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

([gh-16350](https://github.com/numpy/numpy/pull/16350))

Numeric-style type names have been removed from type dictionaries

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

([gh-16554](https://github.com/numpy/numpy/pull/16554))

The `operator.concat` function now raises TypeError for array arguments

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

([gh-16570](https://github.com/numpy/numpy/pull/16570))

`nickname` attribute removed from ABCPolyBase

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

([gh-16589](https://github.com/numpy/numpy/pull/16589))

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

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

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

([gh-16592](https://github.com/numpy/numpy/pull/16592))

`numpy.genfromtxt` now correctly unpacks structured arrays

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

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

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

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

([gh-16650](https://github.com/numpy/numpy/pull/16650))

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

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

([gh-16815](https://github.com/numpy/numpy/pull/16815))

Boolean array indices with mismatching shapes now properly give `IndexError`

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

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

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


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

{.python}
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](https://github.com/numpy/numpy/pull/17010))

Casting errors interrupt Iteration

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

([gh-17029](https://github.com/numpy/numpy/pull/17029))

f2py generated code may return unicode instead of byte strings

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

([gh-17068](https://github.com/numpy/numpy/pull/17068))

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

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

([gh-17241](https://github.com/numpy/numpy/pull/17241))

poly1d respects the dtype of all-zero argument

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

([gh-17577](https://github.com/numpy/numpy/pull/17577))

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

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

([gh-17580](https://github.com/numpy/numpy/pull/17580))

Void dtype discovery in `np.array`

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

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

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

([gh-17706](https://github.com/numpy/numpy/pull/17706))

C API changes
-------------

Size of `np.ndarray` and `np.void_` changed

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

define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))

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

The most likely relevant use are potential subclasses written in C which
will have to be recompiled and should be updated. Please see the
documentation for :c`PyArrayObject`{.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](https://github.com/numpy/numpy/pull/16938))

New Features
------------

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

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

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

`where` keyword argument for `numpy` functions `mean`, `std`, `var`

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

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

([gh-15852](https://github.com/numpy/numpy/pull/15852))

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

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

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

([gh-16476](https://github.com/numpy/numpy/pull/16476))

NumPy is now typed

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

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

([gh-16515](https://github.com/numpy/numpy/pull/16515))

`numpy.typing` is accessible at runtime

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

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


([gh-16558](https://github.com/numpy/numpy/pull/16558))

New `__f2py_numpy_version__` attribute for f2py generated modules.

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

([gh-16594](https://github.com/numpy/numpy/pull/16594))

`mypy` tests can be run via runtests.py

Currently running mypy with the NumPy stubs configured requires either:

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

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

([gh-17123](https://github.com/numpy/numpy/pull/17123))

Negation of user defined BLAS/LAPACK detection order

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

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


That will use any of the accelerated libraries instead.

([gh-17219](https://github.com/numpy/numpy/pull/17219))

Allow passing optimizations arguments to asv build

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

([gh-17284](https://github.com/numpy/numpy/pull/17284))

The NVIDIA HPC SDK nvfortran compiler is now supported

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

([gh-17344](https://github.com/numpy/numpy/pull/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](https://github.com/numpy/numpy/pull/17456))

Improvements
------------

Improved string representation for polynomials (`__str__`)

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

([gh-15666](https://github.com/numpy/numpy/pull/15666))

Remove the Accelerate library as a candidate LAPACK library

Apple no longer supports Accelerate. Remove it.

([gh-15759](https://github.com/numpy/numpy/pull/15759))

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

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

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

([gh-15997](https://github.com/numpy/numpy/pull/15997))

Concatenate supports providing an output dtype

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

([gh-16134](https://github.com/numpy/numpy/pull/16134))

Thread safe f2py callback functions

Callback functions in f2py are now thread safe.

([gh-16519](https://github.com/numpy/numpy/pull/16519))

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

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

([gh-16675](https://github.com/numpy/numpy/pull/16675))

RPATH support on AIX added to distutils

This allows SciPy to be built on AIX.

([gh-16710](https://github.com/numpy/numpy/pull/16710))

Use f90 compiler specified by the command line args

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

([gh-16730](https://github.com/numpy/numpy/pull/16730))

Add NumPy declarations for Cython 3.0 and later

The pxd declarations for Cython 3.0 were improved to avoid using
deprecated NumPy C-API features. Extension modules built with Cython

1.20.0rc2

1.20.0rc1

1.19.5

Not secure
the main improvement is the update to OpenBLAS 0.3.13 that works around
the windows 2004 bug while not breaking execution on other platforms.
This release supports Python 3.6-3.9 and is planned to be the last
release in the 1.19.x cycle.

Contributors
------------

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

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

Pull requests merged
--------------------

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

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

Checksums
---------

MD5

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

SHA256

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

Page 13 of 24

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.