Numpy

Latest version: v1.26.4

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

Scan your dependencies

Page 1 of 21

2022.12

of the array API standard. Note that this does not yet include the optional
`fft` extension in the standard.

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

Support for the updated Accelerate BLAS/LAPACK library

Support for the updated Accelerate BLAS/LAPACK library, including ILP64
(64-bit integer) support, in macOS 13.3 has been added. This brings
arm64 support, and significant performance improvements of up to 10x for
commonly used linear algebra operations. When Accelerate is selected at
build time, the 13.3+ version will automatically be used if available.

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

`meson` backend for `f2py`

`f2py` in compile mode (i.e. `f2py -c`) now accepts the
`--backend meson` option. This is the default option for Python `3.12`
on-wards. Older versions will still default to `--backend distutils`.

To support this in realistic use-cases, in compile mode `f2py` takes a
`--dep` flag one or many times which maps to `dependency()` calls in the
`meson` backend, and does nothing in the `distutils` backend.

There are no changes for users of `f2py` only as a code generator, i.e.
without `-c`.

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

`bind(c)` support for `f2py`

Both functions and subroutines can be annotated with `bind(c)`. `f2py`
will handle both the correct type mapping, and preserve the unique label
for other `C` interfaces.

**Note:** `bind(c, name = 'routine_name_other_than_fortran_routine')` is
not honored by the `f2py` bindings by design, since `bind(c)` with the
`name` is meant to guarantee only the same name in `C` and `Fortran`,
not in `Python` and `Fortran`.

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

Improvements

`iso_c_binding` support for `f2py`

Previously, users would have to define their own custom `f2cmap` file to
use type mappings defined by the Fortran2003 `iso_c_binding` intrinsic
module. These type maps are now natively supported by `f2py`

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

Build system changes

In this release, NumPy has switched to Meson as the build system and
meson-python as the build backend. Installing NumPy or building a wheel
can be done with standard tools like `pip` and `pypa/build`. The
following are supported:

- Regular installs: `pip install numpy` or (in a cloned repo)
`pip install .`
- Building a wheel: `python -m build` (preferred), or `pip wheel .`
- Editable installs: `pip install -e . --no-build-isolation`
- Development builds through the custom CLI implemented with
[spin](https://github.com/scientific-python/spin): `spin build`.

All the regular `pip` and `pypa/build` flags (e.g.,
`--no-build-isolation`) should work as expected.

NumPy-specific build customization

Many of the NumPy-specific ways of customizing builds have changed. The
`NPY_*` environment variables which control BLAS/LAPACK, SIMD,
threading, and other such options are no longer supported, nor is a
`site.cfg` file to select BLAS and LAPACK. Instead, there are
command-line flags that can be passed to the build via `pip`/`build`\'s
config-settings interface. These flags are all listed in the
`meson_options.txt` file in the root of the repo. Detailed documented
will be available before the final 1.26.0 release; for now please see
[the SciPy \"building from source\" docs](http://scipy.github.io/devdocs/building/index.html)
since most build customization works in an almost identical way in SciPy as it
does in NumPy.

Build dependencies

While the runtime dependencies of NumPy have not changed, the build
dependencies have. Because we temporarily vendor Meson and meson-python,
there are several new dependencies - please see the `[build-system]`
section of `pyproject.toml` for details.

Troubleshooting

This build system change is quite large. In case of unexpected issues,
it is still possible to use a `setup.py`-based build as a temporary
workaround (on Python 3.9-3.11, not 3.12), by copying
`pyproject.toml.setuppy` to `pyproject.toml`. However, please open an
issue with details on the NumPy issue tracker. We aim to phase out
`setup.py` builds as soon as possible, and therefore would like to see
all potential blockers surfaced early on in the 1.26.0 release cycle.

Contributors

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

- \DWesl
- Albert Steppi +
- Bas van Beek
- Charles Harris
- Developer-Ecosystem-Engineering
- Jake Vanderplas
- Marten van Kerkwijk
- Matti Picus
- Melissa Weber Mendonça
- Namami Shanker
- Nathan Goldbaum
- Ralf Gommers
- Rohit Goswami
- Sayed Adel
- Sebastian Berg
- Stefan van der Walt
- Tyler Reddy
- Warren Weckesser

Pull requests merged

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

- [24305](https://github.com/numpy/numpy/pull/24305): MAINT: Prepare 1.26.x branch for development
- [24308](https://github.com/numpy/numpy/pull/24308): MAINT: Massive update of files from main for numpy 1.26
- [24322](https://github.com/numpy/numpy/pull/24322): CI: fix wheel builds on the 1.26.x branch
- [24326](https://github.com/numpy/numpy/pull/24326): BLD: update openblas to newer version
- [24327](https://github.com/numpy/numpy/pull/24327): TYP: Trim down the `_NestedSequence.__getitem__` signature
- [24328](https://github.com/numpy/numpy/pull/24328): BUG: fix choose refcount leak
- [24337](https://github.com/numpy/numpy/pull/24337): TST: fix running the test suite in builds without BLAS/LAPACK
- [24338](https://github.com/numpy/numpy/pull/24338): BUG: random: Fix generation of nan by dirichlet.
- [24340](https://github.com/numpy/numpy/pull/24340): MAINT: Dependabot updates from main
- [24342](https://github.com/numpy/numpy/pull/24342): MAINT: Add back `NPY_RUN_MYPY_IN_TESTSUITE=1`
- [24353](https://github.com/numpy/numpy/pull/24353): MAINT: Update `extbuild.py` from main.
- [24356](https://github.com/numpy/numpy/pull/24356): TST: fix distutils tests for deprecations in recent setuptools\...
- [24375](https://github.com/numpy/numpy/pull/24375): MAINT: Update cibuildwheel to version 2.15.0
- [24381](https://github.com/numpy/numpy/pull/24381): MAINT: Fix codespaces setup.sh script
- [24403](https://github.com/numpy/numpy/pull/24403): ENH: Vendor meson for multi-target build support
- [24404](https://github.com/numpy/numpy/pull/24404): BLD: vendor meson-python to make the Windows builds with SIMD\...
- [24405](https://github.com/numpy/numpy/pull/24405): BLD, SIMD: The meson CPU dispatcher implementation
- [24406](https://github.com/numpy/numpy/pull/24406): MAINT: Remove versioneer
- [24409](https://github.com/numpy/numpy/pull/24409): REL: Prepare for the NumPy 1.26.0b1 release.
- [24453](https://github.com/numpy/numpy/pull/24453): MAINT: Pin upper version of sphinx.
- [24455](https://github.com/numpy/numpy/pull/24455): ENH: Add prefix to \_ALIGN Macro
- [24456](https://github.com/numpy/numpy/pull/24456): BUG: cleanup warnings \[skip azp\]\[skip circle\]\[skip travis\]\[skip\...
- [24460](https://github.com/numpy/numpy/pull/24460): MAINT: Upgrade to spin 0.5
- [24495](https://github.com/numpy/numpy/pull/24495): BUG: `asv dev` has been removed, use `asv run`.
- [24496](https://github.com/numpy/numpy/pull/24496): BUG: Fix meson build failure due to unchanged inplace auto-generated\...
- [24521](https://github.com/numpy/numpy/pull/24521): BUG: fix issue with git-version script, needs a shebang to run
- [24522](https://github.com/numpy/numpy/pull/24522): BUG: Use a default assignment for git_hash \[skip ci\]
- [24524](https://github.com/numpy/numpy/pull/24524): BUG: fix NPY_cast_info error handling in choose
- [24526](https://github.com/numpy/numpy/pull/24526): BUG: Fix common block handling in f2py
- [24541](https://github.com/numpy/numpy/pull/24541): CI,TYP: Bump mypy to 1.4.1
- [24542](https://github.com/numpy/numpy/pull/24542): BUG: Fix assumed length f2py regression
- [24544](https://github.com/numpy/numpy/pull/24544): MAINT: Harmonize fortranobject
- [24545](https://github.com/numpy/numpy/pull/24545): TYP: add kind argument to numpy.isin type specification
- [24561](https://github.com/numpy/numpy/pull/24561): BUG: fix comparisons between masked and unmasked structured arrays
- [24590](https://github.com/numpy/numpy/pull/24590): CI: Exclude import libraries from list of DLLs on Cygwin.
- [24591](https://github.com/numpy/numpy/pull/24591): BLD: fix `_umath_linalg` dependencies
- [24594](https://github.com/numpy/numpy/pull/24594): MAINT: Stop testing on ppc64le.
- [24602](https://github.com/numpy/numpy/pull/24602): BLD: meson-cpu: fix SIMD support on platforms with no features
- [24606](https://github.com/numpy/numpy/pull/24606): BUG: Change Cython `binding` directive to \"False\".
- [24613](https://github.com/numpy/numpy/pull/24613): ENH: Adopt new macOS Accelerate BLAS/LAPACK Interfaces, including\...
- [24614](https://github.com/numpy/numpy/pull/24614): DOC: Update building docs to use Meson
- [24615](https://github.com/numpy/numpy/pull/24615): TYP: Add the missing `casting` keyword to `np.clip`
- [24616](https://github.com/numpy/numpy/pull/24616): TST: convert cython test from setup.py to meson
- [24617](https://github.com/numpy/numpy/pull/24617): MAINT: Fixup `fromnumeric.pyi`
- [24622](https://github.com/numpy/numpy/pull/24622): BUG, ENH: Fix `iso_c_binding` type maps and fix `bind(c)`\...
- [24629](https://github.com/numpy/numpy/pull/24629): TYP: Allow `binary_repr` to accept any object implementing\...
- [24630](https://github.com/numpy/numpy/pull/24630): TYP: Explicitly declare `dtype` and `generic` hashable
- [24637](https://github.com/numpy/numpy/pull/24637): ENH: Refactor the typing \"reveal\" tests using [typing.assert_type]{.title-ref}
- [24638](https://github.com/numpy/numpy/pull/24638): MAINT: Bump actions/checkout from 3.6.0 to 4.0.0
- [24647](https://github.com/numpy/numpy/pull/24647): ENH: `meson` backend for `f2py`
- [24648](https://github.com/numpy/numpy/pull/24648): MAINT: Refactor partial load Workaround for Clang

Checksums

MD5

9bcab451e9d0eadcc00ca8ce2f5938e7 numpy-1.26.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
4b1c33742eaba91fb2a3fdf531c086f8 numpy-1.26.0rc1-cp310-cp310-macosx_11_0_arm64.whl
6adb6b6a762f256f5ca6c82b6a302912 numpy-1.26.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
c4dbed88820255134bcae15d02c658ed numpy-1.26.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
72dbf4449513dc1ef51b59266199cf37 numpy-1.26.0rc1-cp310-cp310-musllinux_1_1_x86_64.whl
c25812360af41a904324503d7ca02cce numpy-1.26.0rc1-cp310-cp310-win_amd64.whl
6bbaeaa8c54a084c749ad4ede57bbeb6 numpy-1.26.0rc1-cp311-cp311-macosx_10_9_x86_64.whl
f0585ce50c22914e0f039fd817a847c4 numpy-1.26.0rc1-cp311-cp311-macosx_11_0_arm64.whl
79e7deab2a43552aa4f4097183e6287d numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
1f94542339a4e6327914398b7785876b numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
3c3c3ea226bcf0e92796da621c0ac7fe numpy-1.26.0rc1-cp311-cp311-musllinux_1_1_x86_64.whl
5d6bca28d5c43fc839e4d8eff3b3a35c numpy-1.26.0rc1-cp311-cp311-win_amd64.whl
94df9fa058c650073de474555cc6f0dc numpy-1.26.0rc1-cp312-cp312-macosx_10_9_x86_64.whl
2ef744a42b9db31f7ce4a0c7cb8b546d numpy-1.26.0rc1-cp312-cp312-macosx_11_0_arm64.whl
cf2b61c8480245995348fc2ddc4f556f numpy-1.26.0rc1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
18cea65bce62f924c34d3b0148db4669 numpy-1.26.0rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
5aede55c449bdc62e59230f786faa400 numpy-1.26.0rc1-cp312-cp312-musllinux_1_1_x86_64.whl
15c8199396b8adcfc9a6e4fb730d6faf numpy-1.26.0rc1-cp312-cp312-win_amd64.whl
c9d97598b2bcaac53dc082106d0bc926 numpy-1.26.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
8359d919806089cf48086c923e1b2e81 numpy-1.26.0rc1-cp39-cp39-macosx_11_0_arm64.whl
4322ecb6dd6db9dc704f54603622da72 numpy-1.26.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
a275abd27929fa7428c94b6c493798d7 numpy-1.26.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a374c440c6233a78b0bb1bf11776e48f numpy-1.26.0rc1-cp39-cp39-musllinux_1_1_x86_64.whl
3e540eca6628510c604099a6c0a79fb5 numpy-1.26.0rc1-cp39-cp39-win_amd64.whl
a7b15d45d9b18bd2f065be1eafa3cfea numpy-1.26.0rc1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
b7e926a0415c30df7010400936922cd7 numpy-1.26.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
8430d4acc483c66d76b8263ac90195e6 numpy-1.26.0rc1-pp39-pypy39_pp73-win_amd64.whl
23bf7c39807a9cce5c8ea0ba293b7dd9 numpy-1.26.0rc1.tar.gz

SHA256

abe4b4414edd3dc61a2f6df6f0aa7711c654fc59f41a0eeae4c34b9bfc18aa22 numpy-1.26.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
0e294b045e6fa8f071e4c88836b0df2167fc74ff8561138aa5cd69d1ee98b15e numpy-1.26.0rc1-cp310-cp310-macosx_11_0_arm64.whl
38324eb42bcd45db0b509d02325cb0e3058b6cf05beaf5bd02c221a3133cc9ff numpy-1.26.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
302003be9baeb79f07153426544f87f534eb9fe3b8399ac8ee8420f5cfd7ed5c numpy-1.26.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
f8a9eb3d3f74978cb155a12a77046dae5b8d76bfcf56f76cc92f0d5976857ef9 numpy-1.26.0rc1-cp310-cp310-musllinux_1_1_x86_64.whl
a9b4723216f7970f571d0d71935b32ffe0eacd011befbaa977f34e928ece8c71 numpy-1.26.0rc1-cp310-cp310-win_amd64.whl
5db29b5d2c73a05ef7ed2a37a1ca8f9391579c402a57f6e0944daf755cf7d437 numpy-1.26.0rc1-cp311-cp311-macosx_10_9_x86_64.whl
180ef984616afd4d746961ac8c874ddd5d547ba8f7dd8a58c30bde398c95d15c numpy-1.26.0rc1-cp311-cp311-macosx_11_0_arm64.whl
0e3c8d925204ba0aa887244adec030e71003b828d24731f9feb01526aed76458 numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
01851e82e3256a6c0088e43e69279a0c96214bafa1be326c7a87390d91eb7d44 numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
26571d9f63f49e7612fcfc4375ad23d6882e951bca335115ce440add1a565556 numpy-1.26.0rc1-cp311-cp311-musllinux_1_1_x86_64.whl
f10ef55f19e6634c10b87c5a7c3687461fe950680ebe16e85c03905bcbf6b205 numpy-1.26.0rc1-cp311-cp311-win_amd64.whl
b28cc269bbdd2b6e005241100a97460fdd574ce495fa0eeda3d290d8fd0c66fa numpy-1.26.0rc1-cp312-cp312-macosx_10_9_x86_64.whl
965fedf11de8b621a20fe7182b95ef9ee76764bc1fc288e5b2cb6e8440372560 numpy-1.26.0rc1-cp312-cp312-macosx_11_0_arm64.whl
2ff5f4f14a772e0f86a250d6db86c4121bc1ce7d788f64053e82638e735bb61b numpy-1.26.0rc1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
290c9be374026e63c6e5f5099a06c2cdfea33ff2935e7f46fcd9a1b38728c80c numpy-1.26.0rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
d915b8e07e277a443da4525fd36403ca4f14dcb9cd237ab6a9aff73119b71820 numpy-1.26.0rc1-cp312-cp312-musllinux_1_1_x86_64.whl
3042f503964e1e5decacdfd0eeb0ed9eadf9b70ad1a8bb085ee277bd3ddf4362 numpy-1.26.0rc1-cp312-cp312-win_amd64.whl
3080a9ec21470a9b485e92a09baedb5136468d89b2f2a1896a27fa9e36341af2 numpy-1.26.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
dd42d283561d0fe8911ff0576495a09928a3b53de2c5a6d1959e34a393e8ff65 numpy-1.26.0rc1-cp39-cp39-macosx_11_0_arm64.whl
d881436a9b325fa357b7ac32aac0be8c74921ab0f09d47139553e5da23383bc6 numpy-1.26.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
1c6967bfadb4723aa025a8a9870ff554f1b03c428740167ac6616c7df0c9d817 numpy-1.26.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
69580fae06143eb07300d1f1dace92f22dd4d47600e4832bea2b1685d7bc89e9 numpy-1.26.0rc1-cp39-cp39-musllinux_1_1_x86_64.whl
5241d904c9b651183c48b5b7f49e76715d96177def6a7a9bb5aa9e9984000786 numpy-1.26.0rc1-cp39-cp39-win_amd64.whl
6aa0bda5c93d09f8a0253cc902c6dc66de30228c08bd746d4cb4c73d7daee5bc numpy-1.26.0rc1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
b6e353a18acbbd0253115477879fef4253e284891f37d08eeda6bf77556d1534 numpy-1.26.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
53a6d1f073f8cad9c97a6e7f16eac552475db8246ce379c961edeafb3d0e3152 numpy-1.26.0rc1-pp39-pypy39_pp73-win_amd64.whl
49a8cafece27db51fd9ec78c044546b15b0c9bf95466c57ada9eeae64075c2f8 numpy-1.26.0rc1.tar.gz

120.2

main branch after the NumPy 1.20.1 release.

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

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

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

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

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

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

Checksums
---------

MD5

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

SHA256

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

10.15

infrastructure at that point.

Contributors

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


- Aaron Meurer
- Bas van Beek
- Charles Harris
- Ganesh Kathiresan
- Gavin Zhang +
- Iantra Solari+
- Jyn Spring 琴春 +
- Matti Picus
- Rafael Cardoso Fernandes Sousa
- Rafael Sousa +
- Ralf Gommers
- Rin Cat (鈴猫) +
- Saransh Chopra +
- Sayed Adel
- Sebastian Berg
- Serge Guelton

Pull requests merged

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

- [22136](https://github.com/numpy/numpy/pull/22136): BLD: Add Python 3.11 wheels to aarch64 build
- [22148](https://github.com/numpy/numpy/pull/22148): MAINT: Update setup.py for Python 3.11.
- [22155](https://github.com/numpy/numpy/pull/22155): CI: Test NumPy build against old versions of GCC(6, 7, 8)
- [22156](https://github.com/numpy/numpy/pull/22156): MAINT: support IBM i system
- [22195](https://github.com/numpy/numpy/pull/22195): BUG: Fix circleci build
- [22214](https://github.com/numpy/numpy/pull/22214): BUG: Expose heapsort algorithms in a shared header
- [22215](https://github.com/numpy/numpy/pull/22215): BUG: Support using libunwind for backtrack
- [22216](https://github.com/numpy/numpy/pull/22216): MAINT: fix an incorrect pointer type usage in f2py
- [22220](https://github.com/numpy/numpy/pull/22220): BUG: change overloads to play nice with pyright.
- [22221](https://github.com/numpy/numpy/pull/22221): TST,BUG: Use fork context to fix MacOS savez test
- [22222](https://github.com/numpy/numpy/pull/22222): TYP,BUG: Reduce argument validation in C-based `__class_getitem__`
- [22223](https://github.com/numpy/numpy/pull/22223): TST: ensure `np.equal.reduce` raises a `TypeError`
- [22224](https://github.com/numpy/numpy/pull/22224): BUG: Fix the implementation of numpy.array_api.vecdot
- [22230](https://github.com/numpy/numpy/pull/22230): BUG: Better report integer division overflow (backport)

Checksums

MD5

a60bf0b1d440bf18d87c49409036d05a numpy-1.23.3-cp310-cp310-macosx_10_9_x86_64.whl
59b43423a692f5351c6a43b852b210d7 numpy-1.23.3-cp310-cp310-macosx_11_0_arm64.whl
f482a4be6954b1b606320f0ffc1995dd numpy-1.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
a82e2ecc4060a37dae5424e624eabfe3 numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
84916178e5f4d073d0008754cba7f300 numpy-1.23.3-cp310-cp310-win32.whl
605da65b9b66dfce8b62d847cb3841f7 numpy-1.23.3-cp310-cp310-win_amd64.whl
57cf29f781be955a9cd0de8d07fbce56 numpy-1.23.3-cp311-cp311-macosx_10_9_x86_64.whl
f395dcf622dff0ba44777cbae0442189 numpy-1.23.3-cp311-cp311-macosx_11_0_arm64.whl
55d6a6439913ba84ad89268e0ad59fa0 numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
202bc3a8617f479ebe60ca0dec29964b numpy-1.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a42c3d058bcef47b26841bf9472a89bf numpy-1.23.3-cp311-cp311-win32.whl
237dbd94e5529065c0c5cc4e47ceeb7e numpy-1.23.3-cp311-cp311-win_amd64.whl
d0587d5b28d3fa7e0ec8fd3df76e4bd4 numpy-1.23.3-cp38-cp38-macosx_10_9_x86_64.whl
054234695ed3d955fb01f661db2c14fc numpy-1.23.3-cp38-cp38-macosx_11_0_arm64.whl
4e75ac61e34f1bf23e7cbd6e2bfc7a32 numpy-1.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
29ccb3a732027ee1abe23a9562c32d0c numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
12817838edc1e1bea27df79f3a83da5d numpy-1.23.3-cp38-cp38-win32.whl
ef430e830a9fea7d8db0218b901671f6 numpy-1.23.3-cp38-cp38-win_amd64.whl
b001f7e17df798f9b949bbe259924c77 numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl
bc1782f5d79187d63d14ed69a6a411e9 numpy-1.23.3-cp39-cp39-macosx_11_0_arm64.whl
f8fb0178bc34a198d5ce4e166076e1fc numpy-1.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
fb80d38c37aae1e4d416cd4de068ff0a numpy-1.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
318d0a2a27b7e361295c0382a0ff4a94 numpy-1.23.3-cp39-cp39-win32.whl
880dc73de09fccda0650e9404fa83608 numpy-1.23.3-cp39-cp39-win_amd64.whl
3b5a51f78718a1a82d2750ec159f9acf numpy-1.23.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
56a0c90a303979d5bf8fc57e86e57ccb numpy-1.23.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
5338d997a3178750834e742a257dfa4a numpy-1.23.3-pp38-pypy38_pp73-win_amd64.whl
6efc60a3f6c1b74c849d53fbcc07807b numpy-1.23.3.tar.gz

SHA256

c9f707b5bb73bf277d812ded9896f9512a43edff72712f31667d0a8c2f8e71ee numpy-1.23.3-cp310-cp310-macosx_10_9_x86_64.whl
ffcf105ecdd9396e05a8e58e81faaaf34d3f9875f137c7372450baa5d77c9a54 numpy-1.23.3-cp310-cp310-macosx_11_0_arm64.whl
0ea3f98a0ffce3f8f57675eb9119f3f4edb81888b6874bc1953f91e0b1d4f440 numpy-1.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
004f0efcb2fe1c0bd6ae1fcfc69cc8b6bf2407e0f18be308612007a0762b4089 numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
98dcbc02e39b1658dc4b4508442a560fe3ca5ca0d989f0df062534e5ca3a5c1a numpy-1.23.3-cp310-cp310-win32.whl
39a664e3d26ea854211867d20ebcc8023257c1800ae89773cbba9f9e97bae036 numpy-1.23.3-cp310-cp310-win_amd64.whl
1f27b5322ac4067e67c8f9378b41c746d8feac8bdd0e0ffede5324667b8a075c numpy-1.23.3-cp311-cp311-macosx_10_9_x86_64.whl
2ad3ec9a748a8943e6eb4358201f7e1c12ede35f510b1a2221b70af4bb64295c numpy-1.23.3-cp311-cp311-macosx_11_0_arm64.whl
bdc9febce3e68b697d931941b263c59e0c74e8f18861f4064c1f712562903411 numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
301c00cf5e60e08e04d842fc47df641d4a181e651c7135c50dc2762ffe293dbd numpy-1.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
7cd1328e5bdf0dee621912f5833648e2daca72e3839ec1d6695e91089625f0b4 numpy-1.23.3-cp311-cp311-win32.whl
8355fc10fd33a5a70981a5b8a0de51d10af3688d7a9e4a34fcc8fa0d7467bb7f numpy-1.23.3-cp311-cp311-win_amd64.whl
bc6e8da415f359b578b00bcfb1d08411c96e9a97f9e6c7adada554a0812a6cc6 numpy-1.23.3-cp38-cp38-macosx_10_9_x86_64.whl
22d43376ee0acd547f3149b9ec12eec2f0ca4a6ab2f61753c5b29bb3e795ac4d numpy-1.23.3-cp38-cp38-macosx_11_0_arm64.whl
a64403f634e5ffdcd85e0b12c08f04b3080d3e840aef118721021f9b48fc1460 numpy-1.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
efd9d3abe5774404becdb0748178b48a218f1d8c44e0375475732211ea47c67e numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
f8c02ec3c4c4fcb718fdf89a6c6f709b14949408e8cf2a2be5bfa9c49548fd85 numpy-1.23.3-cp38-cp38-win32.whl
e868b0389c5ccfc092031a861d4e158ea164d8b7fdbb10e3b5689b4fc6498df6 numpy-1.23.3-cp38-cp38-win_amd64.whl
09f6b7bdffe57fc61d869a22f506049825d707b288039d30f26a0d0d8ea05164 numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl
8c79d7cf86d049d0c5089231a5bcd31edb03555bd93d81a16870aa98c6cfb79d numpy-1.23.3-cp39-cp39-macosx_11_0_arm64.whl
e5d5420053bbb3dd64c30e58f9363d7a9c27444c3648e61460c1237f9ec3fa14 numpy-1.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d5422d6a1ea9b15577a9432e26608c73a78faf0b9039437b075cf322c92e98e7 numpy-1.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
c1ba66c48b19cc9c2975c0d354f24058888cdc674bebadceb3cdc9ec403fb5d1 numpy-1.23.3-cp39-cp39-win32.whl
78a63d2df1d947bd9d1b11d35564c2f9e4b57898aae4626638056ec1a231c40c numpy-1.23.3-cp39-cp39-win_amd64.whl
17c0e467ade9bda685d5ac7f5fa729d8d3e76b23195471adae2d6a6941bd2c18 numpy-1.23.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
91b8d6768a75247026e951dce3b2aac79dc7e78622fc148329135ba189813584 numpy-1.23.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
94c15ca4e52671a59219146ff584488907b1f9b3fc232622b47e2cf832e94fb8 numpy-1.23.3-pp38-pypy38_pp73-win_amd64.whl
51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd numpy-1.23.3.tar.gz

3.8

Ubuntu, Fedora, and other Linux distributions dropping 32 bit support.
All 64 bit wheels are also linked with 64 bit OpenBLAS, which should fix
the occasional problems encountered by folks using truly huge arrays.

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

Deprecated numeric style dtype strings have been removed

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

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

Expired deprecations for `loads`, `ndfromtxt`, and `mafromtxt` in npyio

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

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

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

Use delimiter rather than delimitor as kwarg in mrecords

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

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

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

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

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

The `np.MachAr` class has been deprecated

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

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

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

Distutils forces strict floating point model on clang

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

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

Removed floor division support for complex types

Floor division of complex types will now result in a `TypeError`

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


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

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

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

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

Python 3.7 is no longer supported

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

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

str/repr of complex dtypes now include space after punctuation

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

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

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

Corrected `advance` in `PCG64DSXM` and `PCG64`

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

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

Change in generation of random 32 bit floating point variates

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

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

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

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

Masked inner-loops cannot be customized anymore

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

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

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

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

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

NEP 49 configurable allocators

As detailed in [NEP 49](https://numpy.org/neps/nep-0049.html), 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](https://github.com/numpy/numpy/pull/17582))

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

An initial implementation of [NEP
47](https://numpy.org/neps/nep-0047-array-api-standard.html) (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](https://data-apis.org/array-api/latest/index.html) 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](https://github.com/numpy/numpy/pull/18585))

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

This feature depends on [Doxygen](https://www.doxygen.nl/index.html) in
the generation process and on
[Breathe](https://breathe.readthedocs.io/en/latest/) to integrate it
with Sphinx.

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

Assign the platform-specific `c_intp` precision via a mypy plugin

The [mypy](http://mypy-lang.org/) plugin, introduced in
[numpy/numpy\17843](https://github.com/numpy/numpy/pull/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](https://mypy.readthedocs.io/en/stable/config_file.html):

{.ini}
[mypy]
plugins = numpy.typing.mypy_plugin


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

Add NEP 47-compatible dlpack support

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

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

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

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

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


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

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

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

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

Preliminary support for `windows/arm64` target

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

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

Added support for LoongArch

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

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

A `.clang-format` file has been added

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

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

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


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

Symbolic parser for Fortran dimension specifications

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

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

`ndarray`, `dtype` and `number` are now runtime-subscriptable

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

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

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

`ctypeslib.load_library` can now take any path-like object

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

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

Add `smallest_normal` and `smallest_subnormal` attributes to `finfo`

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

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

`numpy.linalg.qr` accepts stacked matrices as inputs

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

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

`numpy.fromregex` now accepts `os.PathLike` implementations

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

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

Add new methods for `quantile` and `percentile`

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

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

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

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

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

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

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

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

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

Annotating the main Numpy namespace

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

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

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

Vectorize umath module using AVX-512

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

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

3.7

Cython 0.28.2 or later. The wheels will be linked with OpenBLAS 3.0, which
should fix some of the linalg problems reported for NumPy 1.14.


Highlights
==========

* NumPy has switched to pytest for testing.
* A new `numpy.printoptions` context manager.
* Many improvements to the histogram functions.
* Support for unicode field names in python 2.7.
* Improved support for PyPy.

New functions
=============

* `numpy.gcd` and `numpy.lcm`, to compute the greatest common divisor and least
common multiple.

* `numpy.ma.stack`, the `numpy.stack` array-joining function generalized to
masked arrays.

* `numpy.quantile` function, an interface to ``percentile`` without factors of
100

* `numpy.nanquantile` function, an interface to ``nanpercentile`` without
factors of 100

* `numpy.printoptions`, a context manager that sets print options temporarily
for the scope of the ``with`` block::

>>> with np.printoptions(precision=2):
... print(np.array([2.0]) / 3)
[0.67]

* `numpy.histogram_bin_edges`, a function to get the edges of the bins used by a
histogram without needing to calculate the histogram.

* C functions `npy_get_floatstatus_barrier` and `npy_clear_floatstatus_barrier`
have been added to deal with compiler optimization changing the order of
operations. See below for details.


Deprecations
============

* Aliases of builtin `pickle` functions are deprecated, in favor of their
unaliased ``pickle.<func>`` names:

* `numpy.loads`
* `numpy.core.numeric.load`
* `numpy.core.numeric.loads`
* `numpy.ma.loads`, `numpy.ma.dumps`
* `numpy.ma.load`, `numpy.ma.dump` - these functions already failed on
python 3 when called with a string.

* Multidimensional indexing with anything but a tuple is deprecated. This means
that the index list in ``ind = [slice(None), 0]; arr[ind]`` should be changed
to a tuple, e.g., ``ind = [slice(None), 0]; arr[tuple(ind)]`` or
``arr[(slice(None), 0)]``. That change is necessary to avoid ambiguity in
expressions such as ``arr[[[0, 1], [0, 1]]]``, currently interpreted as
``arr[array([0, 1]), array([0, 1])]``, that will be interpreted
as ``arr[array([[0, 1], [0, 1]])]`` in the future.

* Imports from the following sub-modules are deprecated, they will be removed
at some future date.

* `numpy.testing.utils`
* `numpy.testing.decorators`
* `numpy.testing.nosetester`
* `numpy.testing.noseclasses`
* `numpy.core.umath_tests`

* Giving a generator to `numpy.sum` is now deprecated. This was undocumented
behavior, but worked. Previously, it would calculate the sum of the generator
expression. In the future, it might return a different result. Use
``np.sum(np.from_iter(generator))`` or the built-in Python ``sum`` instead.

* Users of the C-API should call ``PyArrayResolveWriteBackIfCopy`` or
``PyArray_DiscardWritbackIfCopy`` on any array with the ``WRITEBACKIFCOPY``
flag set, before deallocating the array. A deprecation warning will be
emitted if those calls are not used when needed.

* Users of `numpy.nditer` should use the nditer object as a context manager
whenever one of the iterator operands is writeable so that numpy can manage
writeback semantics, or alternately, one can call ``it.close()`` to trigger a
writeback. A ``RuntimeWarning`` will otherwise be raised in those cases. Users
of the C-API should call ``NpyIter_Close`` before ``NpyIter_Deallocate``.
* Users of ``nditer`` should use the nditer object as a context manager
anytime one of the iterator operands is writeable, so that numpy can
manage writeback semantics, or should call ``it.close()``. A
`RuntimeWarning` may be emitted otherwise in these cases.

* The ``normed`` argument of ``np.histogram``, deprecated long ago in 1.6.0,
now emits a ``DeprecationWarning``.


Future Changes
==============

* NumPy 1.16 will drop support for Python 3.4.
* NumPy 1.17 will drop support for Python 2.7.


Compatibility notes
===================

Compiled testing modules renamed and made private
-------------------------------------------------
The following compiled modules have been renamed and made private:

* ``umath_tests`` -> ``_umath_tests``
* ``test_rational`` -> ``_rational_tests``
* ``multiarray_tests`` -> ``_multiarray_tests``
* ``struct_ufunc_test`` -> ``_struct_ufunc_tests``
* ``operand_flag_tests`` -> ``_operand_flag_tests``

The ``umath_tests`` module is still available for backwards compatibility, but
will be removed in the future.

The ``NpzFile`` returned by ``np.savez`` is now a ``collections.abc.Mapping``
-----------------------------------------------------------------------------
This means it behaves like a readonly dictionary, and has a new ``.values()``
method and ``len()`` implementation.

For python 3, this means that ``.iteritems()``, ``.iterkeys()`` have been
deprecated, and ``.keys()`` and ``.items()`` now return views and not lists.
This is consistent with how the builtin ``dict`` type changed between python 2
and python 3.

Under certain conditions, ``nditer`` must be used in a context manager
----------------------------------------------------------------------
When using an `numpy.nditer` with the ``"writeonly"`` or ``"readwrite"`` flags, there
are some circumstances where nditer doesn't actually give you a view of the
writable array. Instead, it gives you a copy, and if you make changes to the
copy, nditer later writes those changes back into your actual array. Currently,
this writeback occurs when the array objects are garbage collected, which makes
this API error-prone on CPython and entirely broken on PyPy. Therefore,
``nditer`` should now be used as a context manager whenever it is used
with writeable arrays, e.g., ``with np.nditer(...) as it: ...``. You may also
explicitly call ``it.close()`` for cases where a context manager is unusable,
for instance in generator expressions.

Numpy has switched to using pytest instead of nose for testing
--------------------------------------------------------------
The last nose release was 1.3.7 in June, 2015, and development of that tool has
ended, consequently NumPy has now switched to using pytest. The old decorators
and nose tools that were previously used by some downstream projects remain
available, but will not be maintained. The standard testing utilities,
``assert_almost_equal`` and such, are not be affected by this change except for
the nose specific functions ``import_nose`` and ``raises``. Those functions are
not used in numpy, but are kept for downstream compatibility.

Numpy no longer monkey-patches ``ctypes`` with ``__array_interface__``
----------------------------------------------------------------------
Previously numpy added ``__array_interface__`` attributes to all the integer
types from ``ctypes``.

``np.ma.notmasked_contiguous`` and ``np.ma.flatnotmasked_contiguous`` always return lists
-----------------------------------------------------------------------------------------
This is the documented behavior, but previously the result could be any of
slice, None, or list.

All downstream users seem to check for the ``None`` result from
``flatnotmasked_contiguous`` and replace it with ``[]``. Those callers will
continue to work as before.

``np.squeeze`` restores old behavior of objects that cannot handle an ``axis`` argument
---------------------------------------------------------------------------------------
Prior to version ``1.7.0``, `numpy.squeeze` did not have an ``axis`` argument and
all empty axes were removed by default. The incorporation of an ``axis``
argument made it possible to selectively squeeze single or multiple empty axes,
but the old API expectation was not respected because axes could still be
selectively removed (silent success) from an object expecting all empty axes to
be removed. That silent, selective removal of empty axes for objects expecting
the old behavior has been fixed and the old behavior restored.

unstructured void array's ``.item`` method now returns a bytes object
---------------------------------------------------------------------
``.item`` now returns a ``bytes`` object instead of a buffer or byte array.
This may affect code which assumed the return value was mutable, which is no
longer the case.

``copy.copy`` and ``copy.deepcopy`` no longer turn ``masked`` into an array
---------------------------------------------------------------------------
Since ``np.ma.masked`` is a readonly scalar, copying should be a no-op. These
functions now behave consistently with ``np.copy()``.

Multifield Indexing of Structured Arrays will still return a copy
-----------------------------------------------------------------
The change that multi-field indexing of structured arrays returns a view
instead of a copy is pushed back to 1.16. A new method
``numpy.lib.recfunctions.repack_fields`` has been introduced to help mitigate
the effects of this change, which can be used to write code compatible with
both numpy 1.15 and 1.16. For more information on how to update code to account
for this future change see the "accessing multiple fields" section of the
`user guide <https://docs.scipy.org/doc/numpy/user/basics.rec.html>`__.


C API changes
=============

New function ``NpyIter_Close``
------------------------------
The function ``NpyIter_Close`` has been added and should be called before
``NpyIter_Deallocate`` to resolve possible writeback-enabled arrays.

New functions ``npy_get_floatstatus_barrier`` and ``npy_clear_floatstatus_barrier``
-----------------------------------------------------------------------------------
Functions ``npy_get_floatstatus_barrier`` and ``npy_clear_floatstatus_barrier``
have been added and should be used in place of the ``npy_get_floatstatus``and
``npy_clear_status`` functions. Optimizing compilers like GCC 8.1 and Clang
were rearranging the order of operations when the previous functions were used
in the ufunc SIMD functions, resulting in the floatstatus flags being checked
before the operation whose status we wanted to check was run. See `10339
<https://github.com/numpy/numpy/issues/10370>`__.

Changes to ``PyArray_GetDTypeTransferFunction``
-----------------------------------------------
``PyArray_GetDTypeTransferFunction`` now defaults to using user-defined
``copyswapn`` / ``copyswap`` for user-defined dtypes. If this causes a
significant performance hit, consider implementing ``copyswapn`` to reflect the
implementation of ``PyArray_GetStridedCopyFn``. See `10898
<https://github.com/numpy/numpy/pull/10898>`__.
* Functions ``npy_get_floatstatus_barrier`` and ``npy_clear_floatstatus_barrier``
have been added and should be used in place of the ``npy_get_floatstatus``and
``npy_clear_status`` functions. Optimizing compilers like GCC 8.1 and Clang
were rearranging the order of operations when the previous functions were
used in the ufunc SIMD functions, resulting in the floatstatus flags being '
checked before the operation whose status we wanted to check was run.
See `10339 <https://github.com/numpy/numpy/issues/10370>`__.


New Features
============

``np.gcd`` and ``np.lcm`` ufuncs added for integer and objects types
--------------------------------------------------------------------
These compute the greatest common divisor, and lowest common multiple,
respectively. These work on all the numpy integer types, as well as the
builtin arbitrary-precision ``Decimal`` and ``long`` types.

Support for cross-platform builds for iOS
-----------------------------------------
The build system has been modified to add support for the
``_PYTHON_HOST_PLATFORM`` environment variable, used by ``distutils`` when
compiling on one platform for another platform. This makes it possible to
compile NumPy for iOS targets.

This only enables you to compile NumPy for one specific platform at a time.
Creating a full iOS-compatible NumPy package requires building for the 5
architectures supported by iOS (i386, x86_64, armv7, armv7s and arm64), and
combining these 5 compiled builds products into a single "fat" binary.

``return_indices`` keyword added for ``np.intersect1d``
-------------------------------------------------------
New keyword ``return_indices`` returns the indices of the two input arrays
that correspond to the common elements.

``np.quantile`` and ``np.nanquantile``
--------------------------------------
Like ``np.percentile`` and ``np.nanpercentile``, but takes quantiles in [0, 1]
rather than percentiles in [0, 100]. ``np.percentile`` is now a thin wrapper
around ``np.quantile`` with the extra step of dividing by 100.


Build system
------------
Added experimental support for the 64-bit RISC-V architecture.


Improvements
============

``np.ufunc.reduce`` and related functions now accept an initial value
---------------------------------------------------------------------
``np.ufunc.reduce``, ``np.sum``, ``np.prod``, ``np.min`` and ``np.max`` all
now accept an ``initial`` keyword argument that specifies the value to start
the reduction with.

``np.flip`` can operate over multiple axes
------------------------------------------
``np.flip`` now accepts None, or tuples of int, in its ``axis`` argument. If
axis is None, it will flip over all the axes.

``histogram`` and ``histogramdd`` functions have moved to ``np.lib.histograms``
-------------------------------------------------------------------------------
These were originally found in ``np.lib.function_base``. They are still
available under their un-scoped ``np.histogram(dd)`` names, and
to maintain compatibility, aliased at ``np.lib.function_base.histogram(dd)``.

Code that does ``from np.lib.function_base import *`` will need to be updated
with the new location, and should consider not using ``import *`` in future.

``histogram`` will accept NaN values when explicit bins are given
-----------------------------------------------------------------
Previously it would fail when trying to compute a finite range for the data.
Since the range is ignored anyway when the bins are given explicitly, this error
was needless.

Note that calling ``histogram`` on NaN values continues to raise the
``RuntimeWarning`` s typical of working with nan values, which can be silenced
as usual with ``errstate``.

``histogram`` works on datetime types, when explicit bin edges are given
------------------------------------------------------------------------
Dates, times, and timedeltas can now be histogrammed. The bin edges must be
passed explicitly, and are not yet computed automatically.

``histogram`` "auto" estimator handles limited variance better
--------------------------------------------------------------
No longer does an IQR of 0 result in ``n_bins=1``, rather the number of bins
chosen is related to the data size in this situation.

The edges retuned by `histogram`` and ``histogramdd`` now match the data float type
-----------------------------------------------------------------------------------
When passed ``np.float16``, ``np.float32``, or ``np.longdouble`` data, the
returned edges are now of the same dtype. Previously, ``histogram`` would only
return the same type if explicit bins were given, and ``histogram`` would
produce ``float64`` bins no matter what the inputs.

``histogramdd`` allows explicit ranges to be given in a subset of axes
----------------------------------------------------------------------
The ``range`` argument of `numpy.histogramdd` can now contain ``None`` values to
indicate that the range for the corresponding axis should be computed from the
data. Previously, this could not be specified on a per-axis basis.

``np.r_`` works with 0d arrays, and ``np.ma.mr_`` works with ``np.ma.masked``
-----------------------------------------------------------------------------
0d arrays passed to the `r_` and `mr_` concatenation helpers are now treated as
though they are arrays of length 1. Previously, passing these was an error.
As a result, `numpy.ma.mr_` now works correctly on the ``masked`` constant.

``np.ptp`` accepts a ``keepdims`` argument, and extended axis tuples
--------------------------------------------------------------------
``np.ptp`` (peak-to-peak) can now work over multiple axes, just like ``np.max``
and ``np.min``.

``MaskedArray.astype`` now is identical to ``ndarray.astype``
-------------------------------------------------------------
This means it takes all the same arguments, making more code written for
ndarray work for masked array too.

Enable AVX2/AVX512 at compile time
----------------------------------
Change to simd.inc.src to allow use of AVX2 or AVX512 at compile time. Previously
compilation for avx2 (or 512) with -march=native would still use the SSE
code for the simd functions even when the rest of the code got AVX2.

``nan_to_num`` always returns scalars when receiving scalar or 0d inputs
------------------------------------------------------------------------
Previously an array was returned for integer scalar inputs, which is
inconsistent with the behavior for float inputs, and that of ufuncs in general.
For all types of scalar or 0d input, the result is now a scalar.

``np.flatnonzero`` works on numpy-convertible types
---------------------------------------------------
``np.flatnonzero`` now uses ``np.ravel(a)`` instead of ``a.ravel()``, so it
works for lists, tuples, etc.

``np.interp`` returns numpy scalars rather than builtin scalars
---------------------------------------------------------------
Previously ``np.interp(0.5, [0, 1], [10, 20])`` would return a ``float``, but
now it returns a ``np.float64`` object, which more closely matches the behavior
of other functions.

Additionally, the special case of ``np.interp(object_array_0d, ...)`` is no
longer supported, as ``np.interp(object_array_nd)`` was never supported anyway.

As a result of this change, the ``period`` argument can now be used on 0d
arrays.

Allow dtype field names to be unicode in Python 2
-------------------------------------------------
Previously ``np.dtype([(u'name', float)])`` would raise a ``TypeError`` in
Python 2, as only bytestrings were allowed in field names. Now any unicode
string field names will be encoded with the ``ascii`` codec, raising a
``UnicodeEncodeError`` upon failure.

This change makes it easier to write Python 2/3 compatible code using
``from __future__ import unicode_literals``, which previously would cause
string literal field names to raise a TypeError in Python 2.

Comparison ufuncs accept ``dtype=object``, overriding the default ``bool``
--------------------------------------------------------------------------
This allows object arrays of symbolic types, which override ``==`` and other
operators to return expressions, to be compared elementwise with
``np.equal(a, b, dtype=object)``.

``sort`` functions accept ``kind='stable'``
-------------------------------------------
Up until now, to perform a stable sort on the data, the user must do:

>>> np.sort([5, 2, 6, 2, 1], kind='mergesort')
[1, 2, 2, 5, 6]

because merge sort is the only stable sorting algorithm available in
NumPy. However, having kind='mergesort' does not make it explicit that
the user wants to perform a stable sort thus harming the readability.

This change allows the user to specify kind='stable' thus clarifying
the intent.

Do not make temporary copies for in-place accumulation
------------------------------------------------------
When ufuncs perform accumulation they no longer make temporary copies because
of the overlap between input an output, that is, the next element accumulated
is added before the accumulated result is stored in its place, hence the
overlap is safe. Avoiding the copy results in faster execution.

``linalg.matrix_power`` can now handle stacks of matrices
---------------------------------------------------------
Like other functions in ``linalg``, ``matrix_power`` can now deal with arrays
of dimension larger than 2, which are treated as stacks of matrices. As part
of the change, to further improve consistency, the name of the first argument
has been changed to ``a`` (from ``M``), and the exceptions for non-square
matrices have been changed to ``LinAlgError`` (from ``ValueError``).

Increased performance in ``random.permutation`` for multidimensional arrays
---------------------------------------------------------------------------
``permutation`` uses the fast path in ``random.shuffle`` for all input
array dimensions. Previously the fast path was only used for 1-d arrays.

Generalized ufuncs now accept ``axes``, ``axis`` and ``keepdims`` arguments
---------------------------------------------------------------------------
One can control over which axes a generalized ufunc operates by passing in an
``axes`` argument, a list of tuples with indices of particular axes. For
instance, for a signature of ``(i,j),(j,k)->(i,k)`` appropriate for matrix
multiplication, the base elements are two-dimensional matrices and these are
taken to be stored in the two last axes of each argument. The corresponding
axes keyword would be ``[(-2, -1), (-2, -1), (-2, -1)]``. If one wanted to
use leading dimensions instead, one would pass in ``[(0, 1), (0, 1), (0, 1)]``.

For simplicity, for generalized ufuncs that operate on 1-dimensional arrays
(vectors), a single integer is accepted instead of a single-element tuple, and
for generalized ufuncs for which all outputs are scalars, the (empty) output
tuples can be omitted. Hence, for a signature of ``(i),(i)->()`` appropriate
for an inner product, one could pass in ``axes=[0, 0]`` to indicate that the
vectors are stored in the first dimensions of the two inputs arguments.

As a short-cut for generalized ufuncs that are similar to reductions, i.e.,
that act on a single, shared core dimension such as the inner product example
above, one can pass an ``axis`` argument. This is equivalent to passing in
``axes`` with identical entries for all arguments with that core dimension
(e.g., for the example above, ``axes=[(axis,), (axis,)]``).

Furthermore, like for reductions, for generalized ufuncs that have inputs that
all have the same number of core dimensions and outputs with no core dimension,
one can pass in ``keepdims`` to leave a dimension with size 1 in the outputs,
thus allowing proper broadcasting against the original inputs. The location of
the extra dimension can be controlled with ``axes``. For instance, for the
inner-product example, ``keepdims=True, axes=[-2, -2, -2]`` would act on the
inner-product example, ``keepdims=True, axis=-2`` would act on the
one-but-last dimension of the input arguments, and leave a size 1 dimension in
that place in the output.

float128 values now print correctly on ppc systems
--------------------------------------------------
Previously printing float128 values was buggy on ppc, since the special
double-double floating-point-format on these systems was not accounted for.
float128s now print with correct rounding and uniqueness.

Warning to ppc users: You should upgrade glibc if it is version <=2.23,
especially if using float128. On ppc, glibc's malloc in these version often
misaligns allocated memory which can crash numpy when using float128 values.

New ``np.take_along_axis`` and ``np.put_along_axis`` functions
--------------------------------------------------------------
When used on multidimensional arrays, ``argsort``, ``argmin``, ``argmax``, and
``argpartition`` return arrays that are difficult to use as indices.
``take_along_axis`` provides an easy way to use these indices to lookup values
within an array, so that::

np.take_along_axis(a, np.argsort(a, axis=axis), axis=axis)

is the same as::

np.sort(a, axis=axis)

``np.put_along_axis`` acts as the dual operation for writing to these indices
within an array.


Checksums
=========

MD5
---

ae603a7948555f5a877aa9e62d4de4a5 numpy-1.15.0rc1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
2b2bdf4a2e2d2be118740c036952b12a numpy-1.15.0rc1-cp27-cp27m-manylinux1_i686.whl
d0f34f5a96b108e39c5f7c349de4b079 numpy-1.15.0rc1-cp27-cp27m-manylinux1_x86_64.whl
91156245b11f2606fb9679ad11cd3788 numpy-1.15.0rc1-cp27-cp27mu-manylinux1_i686.whl
34f0cc01a35fd61bbf25ee64f2dac5ff numpy-1.15.0rc1-cp27-cp27mu-manylinux1_x86_64.whl
3d003bfc970de7364c7a509f1905b017 numpy-1.15.0rc1-cp27-none-win32.whl
2e63c6cef05817b00aec3550075e4a32 numpy-1.15.0rc1-cp27-none-win_amd64.whl
976c3898f88d06f2fd4e7e4acd454e37 numpy-1.15.0rc1-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
faa3445ef691307efc371c82d34dbbfb numpy-1.15.0rc1-cp34-cp34m-manylinux1_i686.whl
fe5ef50a0f8b21dd16283cbfd05ff438 numpy-1.15.0rc1-cp34-cp34m-manylinux1_x86_64.whl
77bad7aeff1472e6777aedd62f6b7a06 numpy-1.15.0rc1-cp34-none-win32.whl
e8890f675820efb7718a02b071edb3d3 numpy-1.15.0rc1-cp34-none-win_amd64.whl
5a095e7fef444bb70cf43e33fd71a2b0 numpy-1.15.0rc1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
cf92df0e604414593f21976b998f97ba numpy-1.15.0rc1-cp35-cp35m-manylinux1_i686.whl
0cb3a14f65a556652a143fd8cdff21e6 numpy-1.15.0rc1-cp35-cp35m-manylinux1_x86_64.whl
e146ae6eb6bd78b928ae624a9db6a323 numpy-1.15.0rc1-cp35-none-win32.whl
e77c2df92eec2f87a89b5ecffe31de8e numpy-1.15.0rc1-cp35-none-win_amd64.whl
ed423c6807ae7b5488546436259d281f numpy-1.15.0rc1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
d7455ee275bae39c68e130e4848ebb80 numpy-1.15.0rc1-cp36-cp36m-manylinux1_i686.whl
a7e88e6d9c6f5bd59b354b16538a3cc5 numpy-1.15.0rc1-cp36-cp36m-manylinux1_x86_64.whl
e5f8e934ff03979bdb3dc6041ef40859 numpy-1.15.0rc1-cp36-none-win32.whl
a0a932cc07062bb70ad9ff893b57d2b7 numpy-1.15.0rc1-cp36-none-win_amd64.whl
f6c1139993cce7bea5b78418ecf56ed1 numpy-1.15.0rc1.tar.gz
ff5045d88b409bfeff664b13a110400e numpy-1.15.0rc1.zip

SHA256
------

d5e4c5c34745d626d8f6613e4dd9b8d88b2dd9a52ea8764ed934cc5a8cb9cc22 numpy-1.15.0rc1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
744d8c46272a5f2240fc750f7da1d831d90d0f1ce938d5540bcaabfb0f762a53 numpy-1.15.0rc1-cp27-cp27m-manylinux1_i686.whl
9fe328aa046c5c9359d07f5161bdcdaaae8cd6d4fcf0761a41db424628f805d3 numpy-1.15.0rc1-cp27-cp27m-manylinux1_x86_64.whl
85dbc672c5f2683147f5ee1af0793a5159411340f84fea99469dfd699def5bfd numpy-1.15.0rc1-cp27-cp27mu-manylinux1_i686.whl
9870ddc0055dbe5d77f1a7f5abd493737f0728f88e15fdafc459ea5e64a82efa numpy-1.15.0rc1-cp27-cp27mu-manylinux1_x86_64.whl
23ef8080613e5f8743b94d6e075e5894418a4a8a95a2eb7da3e524d180370512 numpy-1.15.0rc1-cp27-none-win32.whl
647dfec3cad0ab6a443a5661ad09cc35c2dd317f843909535d4183b05fea1860 numpy-1.15.0rc1-cp27-none-win_amd64.whl
fb78cb51abd23395a320b3608f35b8a2afcd76f32954184cf84b5db07e3c8649 numpy-1.15.0rc1-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
baf9a2aa084e184cbf9b91702a26491fa263826ae941160527645cff84bf96b5 numpy-1.15.0rc1-cp34-cp34m-manylinux1_i686.whl
2afb65982702da7905640afc63688b6b38c183f410e8df9dfb88c45a430d34f3 numpy-1.15.0rc1-cp34-cp34m-manylinux1_x86_64.whl
00fa0b94566db5512fd402150dbadaeb38e0e78521673242f8ef687c343efcfe numpy-1.15.0rc1-cp34-none-win32.whl
fc1fa913fd0b3d80aed6744b7837176d755e0a6e023364db006c8d17679d64aa numpy-1.15.0rc1-cp34-none-win_amd64.whl
2d17cf40bd5b97c504fb4da00f1c0686c1ef9ebf363b8d5667269e66b07a2544 numpy-1.15.0rc1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
01f46c1149d7571860f758299e5a0b6153d6d34f8821adf0c87d8d6f3e9517c5 numpy-1.15.0rc1-cp35-cp35m-manylinux1_i686.whl
d80d04f9ea96c5d8fc27b0bc47122ad3459946f63fb49d26259decda25677221 numpy-1.15.0rc1-cp35-cp35m-manylinux1_x86_64.whl
f2394a623f83c75dec54ab366ccac879ae01dcff9fa3391c97bda40c2b4b41b3 numpy-1.15.0rc1-cp35-none-win32.whl
3cff020d7beba3668c7e67a5921a4596a6abd917815691b93a5c87c5ae2f2ed3 numpy-1.15.0rc1-cp35-none-win_amd64.whl
ce9295610854f1dc749cc05a1f705539c983cfd4e99f3e7c01106f2d0f49d132 numpy-1.15.0rc1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
8a211172894d6b21e8d2133dbdced490b95492707982cffce32b97fcada718ca numpy-1.15.0rc1-cp36-cp36m-manylinux1_i686.whl
e16b6b066a19fb595eea0bd29ec0f9429af6bda3d0f7be3f31e57bff2b735ac5 numpy-1.15.0rc1-cp36-cp36m-manylinux1_x86_64.whl
b1dcad0333986cbbbfa547d57807047d9777d5e1fd56c47eb47c59050e4485b1 numpy-1.15.0rc1-cp36-none-win32.whl
0e1871bb9307fbc3173c198f5536792185d20750cd5ad9907a14d49f767464b5 numpy-1.15.0rc1-cp36-none-win_amd64.whl
c57f33f83f61ad819e3fcb41afa54d224d03377d6f33be57289924cc193ead63 numpy-1.15.0rc1.tar.gz
592657828982b13ff48a56c5f75fb2f286709f7b830ec211029ac7970027b54d numpy-1.15.0rc1.zip

3.2.2

--------------------------------------
NumPy comes bundled with a minimal implementation of lapack for systems without
a lapack library installed, under the name of ``lapack_lite``. This has been
upgraded from LAPACK 3.0.0 (June 30, 1999) to LAPACK 3.2.2 (June 30, 2010). See
the `LAPACK changelogs`_ for details on the all the changes this entails.

While no new features are exposed through ``numpy``, this fixes some bugs
regarding "workspace" sizes, and in some places may use faster algorithms.

.. _`LAPACK changelogs`: http://www.netlib.org/lapack/release_notes.html#_4_history_of_lapack_releases

``reduce`` of ``np.hypot.reduce`` and ``np.logical_xor`` allowed in more cases
------------------------------------------------------------------------------
This now works on empty arrays, returning 0, and can reduce over multiple axes.
Previously, a ``ValueError`` was thrown in these cases.

Better ``repr`` of object arrays
--------------------------------
Object arrays that contain themselves no longer cause a recursion error.

Object arrays that contain ``list`` objects are now printed in a way that makes
clear the difference between a 2d object array, and a 1d object array of lists.

Changes
=======

``argsort`` on masked arrays takes the same default arguments as ``sort``
-------------------------------------------------------------------------
By default, ``argsort`` now places the masked values at the end of the sorted
array, in the same way that ``sort`` already did. Additionally, the
``end_with`` argument is added to ``argsort``, for consistency with ``sort``.
Note that this argument is not added at the end, so breaks any code that
passed ``fill_value`` as a positional argument.

``average`` now preserves subclasses
------------------------------------
For ndarray subclasses, ``numpy.average`` will now return an instance of the
subclass, matching the behavior of most other NumPy functions such as ``mean``.
As a consequence, also calls that returned a scalar may now return a subclass
array scalar.

``array == None`` and ``array != None`` do element-wise comparison
------------------------------------------------------------------
Previously these operations returned scalars ``False`` and ``True`` respectively.

``np.equal, np.not_equal`` for object arrays ignores object identity
--------------------------------------------------------------------
Previously, these functions always treated identical objects as equal. This had
the effect of overriding comparison failures, comparison of objects that did
not return booleans, such as np.arrays, and comparison of objects where the
results differed from object identity, such as NaNs.

Boolean indexing changes
------------------------
* Boolean array-likes (such as lists of python bools) are always treated as
boolean indexes.

* Boolean scalars (including python ``True``) are legal boolean indexes and
never treated as integers.

* Boolean indexes must match the dimension of the axis that they index.

* Boolean indexes used on the lhs of an assignment must match the dimensions of
the rhs.

* Boolean indexing into scalar arrays return a new 1-d array. This means that
``array(1)[array(True)]`` gives ``array([1])`` and not the original array.

``np.random.multivariate_normal`` behavior with bad covariance matrix
---------------------------------------------------------------------

It is now possible to adjust the behavior the function will have when dealing
with the covariance matrix by using two new keyword arguments:

* ``tol`` can be used to specify a tolerance to use when checking that
the covariance matrix is positive semidefinite.

* ``check_valid`` can be used to configure what the function will do in the
presence of a matrix that is not positive semidefinite. Valid options are
``ignore``, ``warn`` and ``raise``. The default value, ``warn`` keeps the
the behavior used on previous releases.

``assert_array_less`` compares ``np.inf`` and ``-np.inf`` now
-------------------------------------------------------------
Previously, ``np.testing.assert_array_less`` ignored all infinite values. This
is not the expected behavior both according to documentation and intuitively.
Now, -inf < x < inf is considered ``True`` for any real number x and all
other cases fail.

``assert_array_`` and masked arrays ``assert_equal`` hide less warnings
-----------------------------------------------------------------------
Some warnings that were previously hidden by the ``assert_array_``
functions are not hidden anymore. In most cases the warnings should be
correct and, should they occur, will require changes to the tests using
these functions.
For the masked array ``assert_equal`` version, warnings may occur when
comparing NaT. The function presently does not handle NaT or NaN
specifically and it may be best to avoid it at this time should a warning
show up due to this change.

``offset`` attribute value in ``memmap`` objects
------------------------------------------------
The ``offset`` attribute in a ``memmap`` object is now set to the
offset into the file. This is a behaviour change only for offsets
greater than ``mmap.ALLOCATIONGRANULARITY``.

``np.real`` and ``np.imag`` return scalars for scalar inputs
------------------------------------------------------------
Previously, ``np.real`` and ``np.imag`` used to return array objects when
provided a scalar input, which was inconsistent with other functions like
``np.angle`` and ``np.conj``.

The polynomial convenience classes cannot be passed to ufuncs
-------------------------------------------------------------
The ABCPolyBase class, from which the convenience classes are derived, sets
``__array_ufun__ = None`` in order of opt out of ufuncs. If a polynomial
convenience class instance is passed as an argument to a ufunc, a ``TypeError``
will now be raised.

Checksums
=========

MD5
---

bfbb00f0086e3158f773fc7882464056 numpy-1.13.0rc1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
7452330526c3c91b582d9287082aa0c9 numpy-1.13.0rc1-cp27-cp27m-manylinux1_i686.whl
77ff258f36e73636b42d5f5ef4d4b10d numpy-1.13.0rc1-cp27-cp27m-manylinux1_x86_64.whl
24a89cdcb5a41f5da46440f2898835f2 numpy-1.13.0rc1-cp27-cp27mu-manylinux1_i686.whl
2c3542547986142714bd4602833d5e6f numpy-1.13.0rc1-cp27-cp27mu-manylinux1_x86_64.whl
8407cd381bbfccbf897c2c792d767642 numpy-1.13.0rc1-cp27-none-win32.whl
5c8f9dc09f6310059885e8bc5ed150a3 numpy-1.13.0rc1-cp27-none-win_amd64.whl
65a6b52ce96abe3de651157044aac606 numpy-1.13.0rc1-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
964cfe8fa5a4c4f8231d786f4aa17909 numpy-1.13.0rc1-cp34-cp34m-manylinux1_i686.whl
2ce21d136e209bb163d56384bb078356 numpy-1.13.0rc1-cp34-cp34m-manylinux1_x86_64.whl
0852423851745880bcbedfd813180a4b numpy-1.13.0rc1-cp34-none-win32.whl
142b316c5ae0686477e9bad554dbd1f7 numpy-1.13.0rc1-cp34-none-win_amd64.whl
009e7dd7cb8234fe7075e5d13c0080a4 numpy-1.13.0rc1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
48c144101eaa627ce2af797c9a267dc9 numpy-1.13.0rc1-cp35-cp35m-manylinux1_i686.whl
67abccece3e077e33c733e96e08f0442 numpy-1.13.0rc1-cp35-cp35m-manylinux1_x86_64.whl
3e38f4358dec0301bd553338ef07ead0 numpy-1.13.0rc1-cp35-none-win32.whl
7575ae9c9766ae3a8587578f73ed40b8 numpy-1.13.0rc1-cp35-none-win_amd64.whl
819cb22d8b960de9b6f1b5d5d6efdd82 numpy-1.13.0rc1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
2d948fea197d2bae7875f421a95bcae5 numpy-1.13.0rc1-cp36-cp36m-manylinux1_i686.whl
95d242748fce338be7c7f9c40d7ccc8c numpy-1.13.0rc1-cp36-cp36m-manylinux1_x86_64.whl
353264a2da663d0a711f1f2eea6f503e numpy-1.13.0rc1-cp36-none-win32.whl
e10c85248f1d7ed2c111c3599e73fd1c numpy-1.13.0rc1-cp36-none-win_amd64.whl
7db944e5749c1cddd7ad8284bc18508c numpy-1.13.0rc1.tar.gz
d2ebf9601886405881949ca7a1b56f45 numpy-1.13.0rc1.zip

SHA256
------

7fee7d5a7fa750c5bc8068ae5a090fa69c0415b37cd4e7241519f8bc147bf244 numpy-1.13.0rc1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
4c334f6308b9325b9c0c43c08e64796af7e7c90f7c713e27c30f6721d73e60f4 numpy-1.13.0rc1-cp27-cp27m-manylinux1_i686.whl
020eee5dfe06041f751f1d73fb459b6522fd87486ba2ab26d0e54c1f5ce0a507 numpy-1.13.0rc1-cp27-cp27m-manylinux1_x86_64.whl
15e99e0101ac323daced8e976654c1b7c9f04421a9b748a4b382eb4a226cbed4 numpy-1.13.0rc1-cp27-cp27mu-manylinux1_i686.whl
389b53a7479606affaff1fd01f956b4b74327317a4975a7ae36749cf02134f1d numpy-1.13.0rc1-cp27-cp27mu-manylinux1_x86_64.whl
919421bc3c3ad96c148d9181ac3325c52dc3ac8f0b7dc48d37c271276a003dce numpy-1.13.0rc1-cp27-none-win32.whl
07156d7c00bee1695e59c1f6153c7947e9e92c481400a4f40e1484335d57dd03 numpy-1.13.0rc1-cp27-none-win_amd64.whl
8e33417a46714e900882d676be392b7b7dc3ca3b92a48865390bfb7e628bb4b0 numpy-1.13.0rc1-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
5ce9251c5d2609c9a63f3f05ae7e91329601e086973dcfa9b6eb154eebca6e7c numpy-1.13.0rc1-cp34-cp34m-manylinux1_i686.whl
0e3c5174bdb2d6fc41d1176aef8555c4bbe60d22438b16653406161fd112ffd1 numpy-1.13.0rc1-cp34-cp34m-manylinux1_x86_64.whl
1ba3b6a042be496c6eefd15b69ee96dca6d33b911cd765a5b3d902dcdf4e45cc numpy-1.13.0rc1-cp34-none-win32.whl
4d30a5dafa84f99caacd5cecc74c2c5a06b5f3e2acee8b2d2bcd474d8108d8fa numpy-1.13.0rc1-cp34-none-win_amd64.whl
ef790c150362250bd80cf0d160cb02f4fb3619582fb6cccff266a573db67685d numpy-1.13.0rc1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
e3a3451f5817da92ec38e4398b3d8f9bad6645d0e2177747588bed3c9d173a00 numpy-1.13.0rc1-cp35-cp35m-manylinux1_i686.whl
761a3039d847f054332f647951495a16e536c02cd1535bd0367eea77e20492eb numpy-1.13.0rc1-cp35-cp35m-manylinux1_x86_64.whl
b2d1bce62d8fd1f63a424045a62738bf33da6aa3e760bba3833269a96d5f4bb2 numpy-1.13.0rc1-cp35-none-win32.whl
a4f72e45157d40812bc9a227ca5e4f6e975bd60054bec223412ab4b20d5eb8f3 numpy-1.13.0rc1-cp35-none-win_amd64.whl
3bf0b98106daa3944d0e27e7a03e6e73b14a168869f99ca2ecd8785816b3b93f numpy-1.13.0rc1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
4274884c426ab88bb5274278401195d6ae563551ba18997f0662378bbbca492c numpy-1.13.0rc1-cp36-cp36m-manylinux1_i686.whl
0bc608f75d9749bcdef7d43042aae1a867c499954d9d27f91a8562e04bd3bf51 numpy-1.13.0rc1-cp36-cp36m-manylinux1_x86_64.whl
88399fb6c934ff96da351be5a2e81719fdca92dfd9f81837298efda31968a6e4 numpy-1.13.0rc1-cp36-none-win32.whl
8e8e1ccf025c8b6a821f75086a364a68d9e1877519a35bf8facec9e5120836f4 numpy-1.13.0rc1-cp36-none-win_amd64.whl
794a8d45d88197ba7ca740141dd87e440d4dde308aaff08b52936ed3c7df78d5 numpy-1.13.0rc1.tar.gz
fbe37933d584d62d76197a9be531ef17f8ba23462f50f633ba69c16c3f203e43 numpy-1.13.0rc1.zip

Page 1 of 21

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.