Skip to content

Update dependency numpy to v2

Tine Wittler requested to merge renovate/numpy-2.x into master

This MR contains the following updates:

Package Type Update Change
numpy (source, changelog) dependencies major <2.0.0 -> <2.2.0

Release Notes

numpy/numpy

v2.1.1

Compare Source

NumPy 2.1.1 Release Notes

NumPy 2.1.1 is a maintenance release that fixes bugs and regressions discovered after the 2.1.0 release.

The Python versions supported by this release are 3.10-3.13.

Contributors

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

  • Andrew Nelson
  • Charles Harris
  • Mateusz Sokół
  • Maximilian Weigand +
  • Nathan Goldbaum
  • Pieter Eendebak
  • Sebastian Berg

Pull requests merged

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

  • #​27236: REL: Prepare for the NumPy 2.1.0 release [wheel build]
  • #​27252: MAINT: prepare 2.1.x for further development
  • #​27259: BUG: revert unintended change in the return value of set_printoptions
  • #​27266: BUG: fix reference counting bug in __array_interface__ implementation...
  • #​27267: TST: Add regression test for missing descr in array-interface
  • #​27276: BUG: Fix #​27256 and #​27257
  • #​27278: BUG: Fix array_equal for numeric and non-numeric scalar types
  • #​27287: MAINT: Update maintenance/2.1.x after the 2.0.2 release
  • #​27303: BLD: cp311- macosx_arm64 wheels [wheel build]
  • #​27304: BUG: f2py: better handle filtering of public/private subroutines

Checksums

MD5
3053a97400db800b7377749e691eb39e  numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl
84b752a2220dce7c96ff89eef4f4aec3  numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl
47ed4f704a64261f07ca24ef2e674524  numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl
b8a45caa870aee980c298053cf064d28  numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl
e097ad5eee572b791b4a25eedad6df4a  numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ae502c99315884cda7f0236a07c035c4  numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
841a859d975c55090c0b60b72aab93a3  numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl
d51be2b17f5b87aac64ab80fdfafc85e  numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl
1f8249bd725397c6233fe6a0e8ad18b1  numpy-2.1.1-cp310-cp310-win32.whl
d38d6f06589c1ec104a6a31ff6035781  numpy-2.1.1-cp310-cp310-win_amd64.whl
6a18fe3029aae00986975250313bf16f  numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl
5b0b3aa01fbd0b5a8b0f354bb878351e  numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl
1c492dad399abe7b97274b4c6c12ae53  numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl
4d55d91e71b62eb5fa6561c606524f60  numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl
88e99ecd063c178f25bc08d20792a9bf  numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
f3c8b0e4fb059b9219e8ec86d9fda861  numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
df632b5fed7eb78d39e7194d2475c19b  numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl
65499daccdb178d26e322d9f359cf146  numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl
eb97327fd7aa6027e2409d0dcca1129a  numpy-2.1.1-cp311-cp311-win32.whl
9e4b05b38cbff22c2bdfead528b9d2bc  numpy-2.1.1-cp311-cp311-win_amd64.whl
6b8a359bb865b5c624fd9ffc848393e1  numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl
eaf8dce312efa2b0f17ad46612fb1681  numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl
c861ff048b336284fe7c0791b1a6b0b4  numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl
7e1befccfe729dc5d6c450a5fb6b801c  numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl
ea0a401ef653a167221987a10cbef260  numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
97326ac792d26f2e536a519c82f2d6bc  numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
fdd2a82232c03d11bbc7cec0a8e01ab0  numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl
0d6716e9a7b2c0d6e5ace9c01b9bca01  numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl
ba589ed2a79c88187c3b8574ae72a1c7  numpy-2.1.1-cp312-cp312-win32.whl
806ca7c1e2a2013b786edbb619f6da47  numpy-2.1.1-cp312-cp312-win_amd64.whl
647665353e5af5884df4e51610990c22  numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl
bfd3b3c5c4616ef99d917bd94d39114a  numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl
cb989095f9c74e3b32250a984390faeb  numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl
55ad7548e58f61b9a4f91749e36d237f  numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl
5bc73d67dd1032524bfd36ef877b09e4  numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
c7dfb09db8284cb75296f708c3f77ea3  numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
7cf90ce1b844a97aeea1a5b8c71fb49b  numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl
6ec8baeac5f979a3b98017679d457bbc  numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl
1f198cb5210c76faae81359a83d58230  numpy-2.1.1-cp313-cp313-win32.whl
1766258213ad41f7e36f2209ee6d2a30  numpy-2.1.1-cp313-cp313-win_amd64.whl
f0a7a0456308dbeb739ad886f1632f16  numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl
302c9cf7b4aa695974500ee1935a92c9  numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl
f4aa7d784992abb9bd9fe9db09c01c06  numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl
3bb4ae9906499609769f1774438149a5  numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl
ff6b9e1993d3d540074736014b1d13af  numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
749489c091ee9c00abf1ad1ef822c3ca  numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
32d2daf4064031f365ced5036757ad8b  numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl
603dfe4ef56c01e1fc0dcc9d5e3090ed  numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl
70fa2d3b78633bb6061c90e17364f27f  numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
9a430be5d14b689ed051eccc540dfbdc  numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl
7291ff124e471d32c03464da18ff108d  numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e56ce141724af119c7c647a8705827a5  numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl
f63b4750618bfa5490f10cae37fde998  numpy-2.1.1.tar.gz
SHA256
c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9  numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl
7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd  numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl
5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f  numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl
59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab  numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl
13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7  numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6  numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0  numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl
57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647  numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl
9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728  numpy-2.1.1-cp310-cp310-win32.whl
d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae  numpy-2.1.1-cp310-cp310-win_amd64.whl
0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550  numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl
b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f  numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl
0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0  numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl
b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95  numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl
e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca  numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf  numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e  numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl
24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2  numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl
397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d  numpy-2.1.1-cp311-cp311-win32.whl
ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e  numpy-2.1.1-cp311-cp311-win_amd64.whl
7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e  numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl
6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe  numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl
3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f  numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl
fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521  numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl
fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b  numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201  numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a  numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl
8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313  numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl
950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed  numpy-2.1.1-cp312-cp312-win32.whl
3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270  numpy-2.1.1-cp312-cp312-win_amd64.whl
046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5  numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl
6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5  numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl
d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136  numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl
8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0  numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl
981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb  numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df  numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78  numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl
f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556  numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl
251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b  numpy-2.1.1-cp313-cp313-win32.whl
f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0  numpy-2.1.1-cp313-cp313-win_amd64.whl
920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553  numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl
bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480  numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl
cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f  numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl
e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468  numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl
e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef  numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f  numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c  numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl
53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec  numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl
7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5  numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504  numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl
50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd  numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39  numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl
d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd  numpy-2.1.1.tar.gz

v2.1.0

Compare Source

NumPy 2.1.0 Release Notes

NumPy 2.1.0 provides support for the upcoming Python 3.13 release and drops support for Python 3.9. In addition to the usual bug fixes and updated Python support, it helps get us back into our usual release cycle after the extended development of 2.0. The highlights for this release are:

  • Support for the array-api 2023.12 standard.
  • Support for Python 3.13.
  • Preliminary support for free threaded Python 3.13.

Python versions 3.10-3.13 are supported in this release.

New functions

New function numpy.unstack

A new function np.unstack(array, axis=...) was added, which splits an array into a tuple of arrays along an axis. It serves as the inverse of [numpy.stack]{.title-ref}.

(gh-26579)

Deprecations

  • The fix_imports keyword argument in numpy.save is deprecated. Since NumPy 1.17, numpy.save uses a pickle protocol that no longer supports Python 2, and ignored fix_imports keyword. This keyword is kept only for backward compatibility. It is now deprecated.

    (gh-26452)

  • Passing non-integer inputs as the first argument of [bincount]{.title-ref} is now deprecated, because such inputs are silently cast to integers with no warning about loss of precision.

    (gh-27076)

Expired deprecations

  • Scalars and 0D arrays are disallowed for numpy.nonzero and numpy.ndarray.nonzero.

    (gh-26268)

  • set_string_function internal function was removed and PyArray_SetStringFunction was stubbed out.

    (gh-26611)

C API changes

API symbols now hidden but customizable

NumPy now defaults to hide the API symbols it adds to allow all NumPy API usage. This means that by default you cannot dynamically fetch the NumPy API from another library (this was never possible on windows).

If you are experiencing linking errors related to PyArray_API or PyArray_RUNTIME_VERSION, you can define the NPY_API_SYMBOL_ATTRIBUTE to opt-out of this change.

If you are experiencing problems due to an upstream header including NumPy, the solution is to make sure you #include "numpy/ndarrayobject.h" before their header and import NumPy yourself based on including-the-c-api.

(gh-26103)

Many shims removed from npy_3kcompat.h

Many of the old shims and helper functions were removed from npy_3kcompat.h. If you find yourself in need of these, vendor the previous version of the file into your codebase.

(gh-26842)

New PyUFuncObject field process_core_dims_func

The field process_core_dims_func was added to the structure PyUFuncObject. For generalized ufuncs, this field can be set to a function of type PyUFunc_ProcessCoreDimsFunc that will be called when the ufunc is called. It allows the ufunc author to check that core dimensions satisfy additional constraints, and to set output core dimension sizes if they have not been provided.

(gh-26908)

New Features

Preliminary Support for Free-Threaded CPython 3.13

CPython 3.13 will be available as an experimental free-threaded build. See https://py-free-threading.github.io, PEP 703 and the CPython 3.13 release notes for more detail about free-threaded Python.

NumPy 2.1 has preliminary support for the free-threaded build of CPython 3.13. This support was enabled by fixing a number of C thread-safety issues in NumPy. Before NumPy 2.1, NumPy used a large number of C global static variables to store runtime caches and other state. We have either refactored to avoid the need for global state, converted the global state to thread-local state, or added locking.

Support for free-threaded Python does not mean that NumPy is thread safe. Read-only shared access to ndarray should be safe. NumPy exposes shared mutable state and we have not added any locking to the array object itself to serialize access to shared state. Care must be taken in user code to avoid races if you would like to mutate the same array in multiple threads. It is certainly possible to crash NumPy by mutating an array simultaneously in multiple threads, for example by calling a ufunc and the resize method simultaneously. For now our guidance is: "don't do that". In the future we would like to provide stronger guarantees.

Object arrays in particular need special care, since the GIL previously provided locking for object array access and no longer does. See Issue #​27199 for more information about object arrays in the free-threaded build.

If you are interested in free-threaded Python, for example because you have a multiprocessing-based workflow that you are interested in running with Python threads, we encourage testing and experimentation.

If you run into problems that you suspect are because of NumPy, please open an issue, checking first if the bug also occurs in the "regular" non-free-threaded CPython 3.13 build. Many threading bugs can also occur in code that releases the GIL; disabling the GIL only makes it easier to hit threading bugs.

(gh-26157)

f2py can generate freethreading-compatible C extensions

Pass --freethreading-compatible to the f2py CLI tool to produce a C extension marked as compatible with the free threading CPython interpreter. Doing so prevents the interpreter from re-enabling the GIL at runtime when it imports the C extension. Note that f2py does not analyze fortran code for thread safety, so you must verify that the wrapped fortran code is thread safe before marking the extension as compatible.

(gh-26981)

  • numpy.reshape and numpy.ndarray.reshape now support shape and copy arguments.

    (gh-26292)

  • NumPy now supports DLPack v1, support for older versions will be deprecated in the future.

    (gh-26501)

  • numpy.asanyarray now supports copy and device arguments, matching numpy.asarray.

    (gh-26580)

  • numpy.printoptions, numpy.get_printoptions, and numpy.set_printoptions now support a new option, override_repr, for defining custom repr(array) behavior.

    (gh-26611)

  • numpy.cumulative_sum and numpy.cumulative_prod were added as Array API compatible alternatives for numpy.cumsum and numpy.cumprod. The new functions can include a fixed initial (zeros for sum and ones for prod) in the result.

    (gh-26724)

  • numpy.clip now supports max and min keyword arguments which are meant to replace a_min and a_max. Also, for np.clip(a) or np.clip(a, None, None) a copy of the input array will be returned instead of raising an error.

    (gh-26724)

  • numpy.astype now supports device argument.

    (gh-26724)

Improvements

histogram auto-binning now returns bin sizes >=1 for integer input data

For integer input data, bin sizes smaller than 1 result in spurious empty bins. This is now avoided when the number of bins is computed using one of the algorithms provided by histogram_bin_edges.

(gh-12150)

ndarray shape-type parameter is now covariant and bound to tuple[int, ...]

Static typing for ndarray is a long-term effort that continues with this change. It is a generic type with type parameters for the shape and the data type. Previously, the shape type parameter could be any value. This change restricts it to a tuple of ints, as one would expect from using ndarray.shape. Further, the shape-type parameter has been changed from invariant to covariant. This change also applies to the subtypes of ndarray, e.g. numpy.ma.MaskedArray. See the typing docs for more information.

(gh-26081)

np.quantile with method closest_observation chooses nearest even order statistic

This changes the definition of nearest for border cases from the nearest odd order statistic to nearest even order statistic. The numpy implementation now matches other reference implementations.

(gh-26656)

lapack_lite is now thread safe

NumPy provides a minimal low-performance version of LAPACK named lapack_lite that can be used if no BLAS/LAPACK system is detected at build time.

Until now, lapack_lite was not thread safe. Single-threaded use cases did not hit any issues, but running linear algebra operations in multiple threads could lead to errors, incorrect results, or segfaults due to data races.

We have added a global lock, serializing access to lapack_lite in multiple threads.

(gh-26750)

The numpy.printoptions context manager is now thread and async-safe

In prior versions of NumPy, the printoptions were defined using a combination of Python and C global variables. We have refactored so the state is stored in a python ContextVar, making the context manager thread and async-safe.

(gh-26846)

Type hinting numpy.polynomial

Starting from the 2.1 release, PEP 484 type annotations have been included for the functions and convenience classes in numpy.polynomial and its sub-packages.

(gh-26897)

Improved numpy.dtypes type hints

The type annotations for numpy.dtypes are now a better reflection of the runtime: The numpy.dtype type-aliases have been replaced with specialized dtype subtypes, and the previously missing annotations for numpy.dtypes.StringDType have been added.

(gh-27008)

Performance improvements and changes

  • numpy.save now uses pickle protocol version 4 for saving arrays with object dtype, which allows for pickle objects larger than 4GB and improves saving speed by about 5% for large arrays.

    (gh-26388)

  • OpenBLAS on x86_64 and i686 is built with fewer kernels. Based on benchmarking, there are 5 clusters of performance around these kernels: MRESCOTT NEHALEM SANDYBRIDGE HASWELL SKYLAKEX.

    (gh-27147)

  • OpenBLAS on windows is linked without quadmath, simplifying licensing

    (gh-27147)

  • Due to a regression in OpenBLAS on windows, the performance improvements when using multiple threads for OpenBLAS 0.3.26 were reverted.

    (gh-27147)

ma.cov and ma.corrcoef are now significantly faster

The private function has been refactored along with ma.cov and ma.corrcoef. They are now significantly faster, particularly on large, masked arrays.

(gh-26285)

Changes

  • As numpy.vecdot is now a ufunc it has a less precise signature. This is due to the limitations of ufunc's typing stub.

    (gh-26313)

  • numpy.floor, numpy.ceil, and numpy.trunc now won't perform casting to a floating dtype for integer and boolean dtype input arrays.

    (gh-26766)

ma.corrcoef may return a slightly different result

A pairwise observation approach is currently used in ma.corrcoef to calculate the standard deviations for each pair of variables. This has been changed as it is being used to normalise the covariance, estimated using ma.cov, which does not consider the observations for each variable in a pairwise manner, rendering it unnecessary. The normalisation has been replaced by the more appropriate standard deviation for each variable, which significantly reduces the wall time, but will return slightly different estimates of the correlation coefficients in cases where the observations between a pair of variables are not aligned. However, it will return the same estimates in all other cases, including returning the same correlation matrix as corrcoef when using a masked array with no masked values.

(gh-26285)

Cast-safety fixes in copyto and full

copyto now uses NEP 50 correctly and applies this to its cast safety. Python integer to NumPy integer casts and Python float to NumPy float casts are now considered "safe" even if assignment may fail or precision may be lost. This means the following examples change slightly:

  • np.copyto(int8_arr, 1000) previously performed an unsafe/same-kind cast of the Python integer. It will now always raise, to achieve an unsafe cast you must pass an array or NumPy scalar.

  • np.copyto(uint8_arr, 1000, casting="safe") will raise an OverflowError rather than a TypeError due to same-kind casting.

  • np.copyto(float32_arr, 1e300, casting="safe") will overflow to inf (float32 cannot hold 1e300) rather raising a TypeError.

Further, only the dtype is used when assigning NumPy scalars (or 0-d arrays), meaning that the following behaves differently:

  • np.copyto(float32_arr, np.float64(3.0), casting="safe") raises.
  • np.coptyo(int8_arr, np.int64(100), casting="safe") raises. Previously, NumPy checked whether the 100 fits the int8_arr.

This aligns copyto, full, and full_like with the correct NumPy 2 behavior.

(gh-27091)

Checksums

MD5
2323404663c0b2a86362319d7526eb80  numpy-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl
3d4bca8d05eb1eba859e77ff8f91d843  numpy-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
9bd065f147dbf3f2d59ab57bff4f0074  numpy-2.1.0-cp310-cp310-macosx_14_0_arm64.whl
47d177533511901cd6bf77f72cbd3d6e  numpy-2.1.0-cp310-cp310-macosx_14_0_x86_64.whl
530b7f38f64216f1322b39bc50f36c0c  numpy-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d2a3161a10811a675a29a63e25636d83  numpy-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
4e9fb20b080f7931791da71708740b83  numpy-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl
776eb610795d63217980a36eb23bf268  numpy-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
8328b9e2afa4013aaf3e4963349445e2  numpy-2.1.0-cp310-cp310-win32.whl
e3184b9979192c8d7b80deb2af16d6bb  numpy-2.1.0-cp310-cp310-win_amd64.whl
54571aef9d9081e35bebef10f8d64e75  numpy-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
841dac2386c1da870a384b64cd31e32b  numpy-2.1.0-cp311-cp311-macosx_14_0_arm64.whl
0fe85239ebe336d2baaddcb0ed001dc7  numpy-2.1.0-cp311-cp311-macosx_14_0_x86_64.whl
772a55a6c46f7b643af4640c2ca68d70  numpy-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
64fefbc527229521cf2a516b778b8aa7  numpy-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
5cdb3d262d8c513b0f08cd1b6ba48512  numpy-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl
16140f5de42e87d84b80c350fd014893  numpy-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
5e37df534d167af1966e099e0be9d94a  numpy-2.1.0-cp311-cp311-win32.whl
ee443aa000621bed8bb2d6a94afd89b5  numpy-2.1.0-cp311-cp311-win_amd64.whl
d8c911fc34a8dad4ed821036563b5758  numpy-2.1.0-cp312-cp312-macosx_10_9_x86_64.whl
ec25d637c43ae8229052e62a4f40f2d2  numpy-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
67c7abca3d0339f17a8543abc0e7bf11  numpy-2.1.0-cp312-cp312-macosx_14_0_arm64.whl
0d36ec6a64cbef1d727eb608a236ad2c  numpy-2.1.0-cp312-cp312-macosx_14_0_x86_64.whl
0eedab574a3b75ec237be910e9717153  numpy-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
73dd2a5d0c85007bf5fdb4b7f66b8451  numpy-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
94fb0cfbc647a34177c766570fad752b  numpy-2.1.0-cp312-cp312-musllinux_1_1_x86_64.whl
de3efbbcd792a1f82d0e3e175ea02ca9  numpy-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
9a63ebbfb3c4c6eba77ef0723a5dc86f  numpy-2.1.0-cp312-cp312-win32.whl
c68bc27545ac68c54935a1d0278b18f6  numpy-2.1.0-cp312-cp312-win_amd64.whl
f2795bb974af42e2723e32af9b14b66d  numpy-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl
2f7426b06a332ea7a20159f3c06d67d1  numpy-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
fcef18e031fc8588227023bac55d9636  numpy-2.1.0-cp313-cp313-macosx_14_0_arm64.whl
cbb5ca4dc798ea397344c93a2549e73e  numpy-2.1.0-cp313-cp313-macosx_14_0_x86_64.whl
573213bea3a67452a310355adc7c6aa1  numpy-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
24f8c8a1235aeaedb8f154a984b3c78b  numpy-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b2ef762c0ebb02b58a339c1e38f032b2  numpy-2.1.0-cp313-cp313-musllinux_1_1_x86_64.whl
50e68cbfeb330aff607969c30251632d  numpy-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
21228342cd1b4ff8c7ec1aea45c07186  numpy-2.1.0-cp313-cp313-win32.whl
8d234b05f0c4faf7b9884a1f0f19c23d  numpy-2.1.0-cp313-cp313-win_amd64.whl
e0c19ca29fa8e8e051107cd36b978f05  numpy-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl
98756f2ff9adc2cf374c28db77e28312  numpy-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl
69786349d1f392dc6ac3fe00271e941b  numpy-2.1.0-cp313-cp313t-macosx_14_0_arm64.whl
4d1481bcb17aaebfc785e005455da223  numpy-2.1.0-cp313-cp313t-macosx_14_0_x86_64.whl
1d403eda14369ab023d5ae1c15dce25c  numpy-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
cdeece2cd6508eeee5a4c3150b58ec59  numpy-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
85347b754d8324c508f7aeb7de243feb  numpy-2.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl
6ff18d36d0940de6c1cc962a61b44bd5  numpy-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl
2f7d60a99c236a8f909bd86b8ed1e3a4  numpy-2.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
dc610133d9f09e5b3d396859e75c5593  numpy-2.1.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl
6a2883ee5b16ab5c031037cc63c20e9b  numpy-2.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
c914ba2fe3fcdcd04c8fe6a8374ea5fb  numpy-2.1.0-pp310-pypy310_pp73-win_amd64.whl
4cb2230ffa1cc41329ae29bd69ee08de  numpy-2.1.0.tar.gz
SHA256
6326ab99b52fafdcdeccf602d6286191a79fe2fda0ae90573c5814cd2b0bc1b8  numpy-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl
0937e54c09f7a9a68da6889362ddd2ff584c02d015ec92672c099b61555f8911  numpy-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
30014b234f07b5fec20f4146f69e13cfb1e33ee9a18a1879a0142fbb00d47673  numpy-2.1.0-cp310-cp310-macosx_14_0_arm64.whl
899da829b362ade41e1e7eccad2cf274035e1cb36ba73034946fccd4afd8606b  numpy-2.1.0-cp310-cp310-macosx_14_0_x86_64.whl
08801848a40aea24ce16c2ecde3b756f9ad756586fb2d13210939eb69b023f5b  numpy-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
398049e237d1aae53d82a416dade04defed1a47f87d18d5bd615b6e7d7e41d1f  numpy-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
0abb3916a35d9090088a748636b2c06dc9a6542f99cd476979fb156a18192b84  numpy-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl
10e2350aea18d04832319aac0f887d5fcec1b36abd485d14f173e3e900b83e33  numpy-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
f6b26e6c3b98adb648243670fddc8cab6ae17473f9dc58c51574af3e64d61211  numpy-2.1.0-cp310-cp310-win32.whl
f505264735ee074250a9c78247ee8618292091d9d1fcc023290e9ac67e8f1afa  numpy-2.1.0-cp310-cp310-win_amd64.whl
76368c788ccb4f4782cf9c842b316140142b4cbf22ff8db82724e82fe1205dce  numpy-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
f8e93a01a35be08d31ae33021e5268f157a2d60ebd643cfc15de6ab8e4722eb1  numpy-2.1.0-cp311-cp311-macosx_14_0_arm64.whl
9523f8b46485db6939bd069b28b642fec86c30909cea90ef550373787f79530e  numpy-2.1.0-cp311-cp311-macosx_14_0_x86_64.whl
54139e0eb219f52f60656d163cbe67c31ede51d13236c950145473504fa208cb  numpy-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
f5ebbf9fbdabed208d4ecd2e1dfd2c0741af2f876e7ae522c2537d404ca895c3  numpy-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
378cb4f24c7d93066ee4103204f73ed046eb88f9ad5bb2275bb9fa0f6a02bd36  numpy-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl
d8f699a709120b220dfe173f79c73cb2a2cab2c0b88dd59d7b49407d032b8ebd  numpy-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
ffbd6faeb190aaf2b5e9024bac9622d2ee549b7ec89ef3a9373fa35313d44e0e  numpy-2.1.0-cp311-cp311-win32.whl
0af3a5987f59d9c529c022c8c2a64805b339b7ef506509fba7d0556649b9714b  numpy-2.1.0-cp311-cp311-win_amd64.whl
fe76d75b345dc045acdbc006adcb197cc680754afd6c259de60d358d60c93736  numpy-2.1.0-cp312-cp312-macosx_10_9_x86_64.whl
f358ea9e47eb3c2d6eba121ab512dfff38a88db719c38d1e67349af210bc7529  numpy-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
dd94ce596bda40a9618324547cfaaf6650b1a24f5390350142499aa4e34e53d1  numpy-2.1.0-cp312-cp312-macosx_14_0_arm64.whl
b47c551c6724960479cefd7353656498b86e7232429e3a41ab83be4da1b109e8  numpy-2.1.0-cp312-cp312-macosx_14_0_x86_64.whl
a0756a179afa766ad7cb6f036de622e8a8f16ffdd55aa31f296c870b5679d745  numpy-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
24003ba8ff22ea29a8c306e61d316ac74111cebf942afbf692df65509a05f111  numpy-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b34fa5e3b5d6dc7e0a4243fa0f81367027cb6f4a7215a17852979634b5544ee0  numpy-2.1.0-cp312-cp312-musllinux_1_1_x86_64.whl
c4f982715e65036c34897eb598d64aef15150c447be2cfc6643ec7a11af06574  numpy-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
c4cd94dfefbefec3f8b544f61286584292d740e6e9d4677769bc76b8f41deb02  numpy-2.1.0-cp312-cp312-win32.whl
a0cdef204199278f5c461a0bed6ed2e052998276e6d8ab2963d5b5c39a0500bc  numpy-2.1.0-cp312-cp312-win_amd64.whl
8ab81ccd753859ab89e67199b9da62c543850f819993761c1e94a75a814ed667  numpy-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl
442596f01913656d579309edcd179a2a2f9977d9a14ff41d042475280fc7f34e  numpy-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
848c6b5cad9898e4b9ef251b6f934fa34630371f2e916261070a4eb9092ffd33  numpy-2.1.0-cp313-cp313-macosx_14_0_arm64.whl
54c6a63e9d81efe64bfb7bcb0ec64332a87d0b87575f6009c8ba67ea6374770b  numpy-2.1.0-cp313-cp313-macosx_14_0_x86_64.whl
652e92fc409e278abdd61e9505649e3938f6d04ce7ef1953f2ec598a50e7c195  numpy-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
0ab32eb9170bf8ffcbb14f11613f4a0b108d3ffee0832457c5d4808233ba8977  numpy-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
8fb49a0ba4d8f41198ae2d52118b050fd34dace4b8f3fb0ee34e23eb4ae775b1  numpy-2.1.0-cp313-cp313-musllinux_1_1_x86_64.whl
44e44973262dc3ae79e9063a1284a73e09d01b894b534a769732ccd46c28cc62  numpy-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
ab83adc099ec62e044b1fbb3a05499fa1e99f6d53a1dde102b2d85eff66ed324  numpy-2.1.0-cp313-cp313-win32.whl
de844aaa4815b78f6023832590d77da0e3b6805c644c33ce94a1e449f16d6ab5  numpy-2.1.0-cp313-cp313-win_amd64.whl
343e3e152bf5a087511cd325e3b7ecfd5b92d369e80e74c12cd87826e263ec06  numpy-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl
f07fa2f15dabe91259828ce7d71b5ca9e2eb7c8c26baa822c825ce43552f4883  numpy-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl
5474dad8c86ee9ba9bb776f4b99ef2d41b3b8f4e0d199d4f7304728ed34d0300  numpy-2.1.0-cp313-cp313t-macosx_14_0_arm64.whl
1f817c71683fd1bb5cff1529a1d085a57f02ccd2ebc5cd2c566f9a01118e3b7d  numpy-2.1.0-cp313-cp313t-macosx_14_0_x86_64.whl
3a3336fbfa0d38d3deacd3fe7f3d07e13597f29c13abf4d15c3b6dc2291cbbdd  numpy-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
7a894c51fd8c4e834f00ac742abad73fc485df1062f1b875661a3c1e1fb1c2f6  numpy-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
9156ca1f79fc4acc226696e95bfcc2b486f165a6a59ebe22b2c1f82ab190384a  numpy-2.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl
624884b572dff8ca8f60fab591413f077471de64e376b17d291b19f56504b2bb  numpy-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl
15ef8b2177eeb7e37dd5ef4016f30b7659c57c2c0b57a779f1d537ff33a72c7b  numpy-2.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
e5f0642cdf4636198a4990de7a71b693d824c56a757862230454629cf62e323d  numpy-2.1.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl
f15976718c004466406342789f31b6673776360f3b1e3c575f25302d7e789575  numpy-2.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
6c1de77ded79fef664d5098a66810d4d27ca0224e9051906e634b3f7ead134c2  numpy-2.1.0-pp310-pypy310_pp73-win_amd64.whl
7dc90da0081f7e1da49ec4e398ede6a8e9cc4f5ebe5f9e06b443ed889ee9aaa2  numpy-2.1.0.tar.gz

v2.0.2

Compare Source

NumPy 2.0.2 Release Notes

NumPy 2.0.2 is a maintenance release that fixes bugs and regressions discovered after the 2.0.1 release.

The Python versions supported by this release are 3.9-3.12.

Contributors

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

  • Bruno Oliveira +
  • Charles Harris
  • Chris Sidebottom
  • Christian Heimes +
  • Christopher Sidebottom
  • Mateusz Sokół
  • Matti Picus
  • Nathan Goldbaum
  • Pieter Eendebak
  • Raghuveer Devulapalli
  • Ralf Gommers
  • Sebastian Berg
  • Yair Chuchem +

Pull requests merged

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

  • #​27000: REL: Prepare for the NumPy 2.0.1 release [wheel build]
  • #​27001: MAINT: prepare 2.0.x for further development
  • #​27021: BUG: cfuncs.py: fix crash when sys.stderr is not available
  • #​27022: DOC: Fix migration note for alltrue and sometrue
  • #​27061: BUG: use proper input and output descriptor in array_assign_subscript...
  • #​27073: BUG: Mirror VQSORT_ENABLED logic in Quicksort
  • #​27074: BUG: Bump Highway to latest master
  • #​27077: BUG: Off by one in memory overlap check
  • #​27122: BUG: Use the new npyv_loadable_stride_ functions for ldexp and...
  • #​27126: BUG: Bump Highway to latest
  • #​27128: BUG: add missing error handling in public_dtype_api.c
  • #​27129: BUG: fix another cast setup in array_assign_subscript
  • #​27130: BUG: Fix building NumPy in FIPS mode
  • #​27131: BLD: update vendored Meson for cross-compilation patches
  • #​27146: MAINT: Scipy openblas 0.3.27.44.4
  • #​27151: BUG: Do not accidentally store dtype metadata in np.save
  • #​27195: REV: Revert undef I and document it
  • #​27213: BUG: Fix NPY_RAVEL_AXIS on backwards compatible NumPy 2 builds
  • #​27279: BUG: Fix array_equal for numeric and non-numeric scalar types

Checksums

MD5
ae4bc199b56d20305984b7465d6fbdf1  numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl
ecce0a682c2ccaaa14500b87ffb69f63  numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl
a94f34bec8a62dab95ce9883a87a82a6  numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl
a0a26dadf73264d31b7a6952b816d7c8  numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl
972f4366651a1a2ef00f630595104d15  numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
6cffef937fe67a3879abefd3d2c40fb8  numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
3717a5deda20f465720717a1a7a293a6  numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl
e31136ecc97bb76b3cb7e86bfc9471ac  numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl
9703a02ca6b63ca53f83660d089f4294  numpy-2.0.2-cp310-cp310-win32.whl
12c097ef2c7492282a5514b5c4b68784  numpy-2.0.2-cp310-cp310-win_amd64.whl
f11d11bfa3aaf371d2e7fa0160e3208b  numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl
86fc67666fc6e27740fde7dacb19c484  numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl
5fd12e0dd7162ea9599c49bbb6e6730e  numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl
a40f473db729ea10ae401ce71899120a  numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl
36ea96e0be954896597543d726157eda  numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
cfa726b6d5445687020fc4d4f7191e42  numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
dfb9a7b7fe218e931b0dfb885a8250d6  numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl
d8bf100186e6cd1b2f27eb617ba9e581  numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl
4fe937eba0fc4d28a65c0ba571c809fc  numpy-2.0.2-cp311-cp311-win32.whl
a9a0f8e1bc4d825272514896e3b17f15  numpy-2.0.2-cp311-cp311-win_amd64.whl
5ef80ec3b2db487d89c590eb301a7aa4  numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl
1bb398d93422bb9baf63c958ed1aa492  numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl
cc8d990a1ad3f4d66d0143ea709ccc99  numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl
4fee57e854bc3e9a267e865740438d53  numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl
c2c18eef5118607c0b023f6267ee9774  numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
2928ed26d7153a488bfb126424d86c8f  numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e32167073981b0a1a419aaaec741773e  numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl
80a10803a3122472c1bf6c4617d0d1c5  numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl
39724e27a003b6ce9b1bcbf251e50b4b  numpy-2.0.2-cp312-cp312-win32.whl
8319d0b3d23285d4698cbece73b23fde  numpy-2.0.2-cp312-cp312-win_amd64.whl
da0f655880bbcb53094816b77cd493d1  numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl
47347c028f6ccf47d6a22724111fc96f  numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl
26a5c8dec993258522fcef84ef0c040e  numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl
fe447af86983ef2262e605a941bd46af  numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl
96477b8563e6d4e2db710f4915a4c5e0  numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
4e8255cdff60de62944aed1f4235ff68  numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
05d8465b87ca983eee044b66bc725391  numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl
dcf448ef80720bae7de6724f92499754  numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl
71557f67f24d39db709cc4ccb85ae5b5  numpy-2.0.2-cp39-cp39-win32.whl
f5dc31c5530037c4d1d990696b1d041c  numpy-2.0.2-cp39-cp39-win_amd64.whl
a8f814da1a4509724346c14cd838b5dc  numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
918f072481d014229dd5f0f5ba75306f  numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl
fcbe2e38506fbbbeda509a89063563d3  numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b99eff795ca26f8a513aace76a45a356  numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl
d517a3be706295c4a4c8f75f5ee7b261  numpy-2.0.2.tar.gz
SHA256
51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece  numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl
f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04  numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl
8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66  numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl
becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b  numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl
2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd  numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318  numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8  numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl
d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326  numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl
984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97  numpy-2.0.2-cp310-cp310-win32.whl
c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131  numpy-2.0.2-cp310-cp310-win_amd64.whl
49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448  numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl
11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195  numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl
807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57  numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl
8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a  numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl
a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669  numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951  numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9  numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl
c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15  numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl
a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4  numpy-2.0.2-cp311-cp311-win32.whl
286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc  numpy-2.0.2-cp311-cp311-win_amd64.whl
df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b  numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl
8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e  numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl
9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c  numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl
a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c  numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl
c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692  numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a  numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c  numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl
ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded  numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl
671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5  numpy-2.0.2-cp312-cp312-win32.whl
cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a  numpy-2.0.2-cp312-cp312-win_amd64.whl
9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c  numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl
423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd  numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl
2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b  numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl
97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729  numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl
1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1  numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd  numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d  numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl
9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d  numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl
905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa  numpy-2.0.2-cp39-cp39-win32.whl
a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73  numpy-2.0.2-cp39-cp39-win_amd64.whl
7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8  numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4  numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl
26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c  numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385  numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl
883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78  numpy-2.0.2.tar.gz

v2.0.1

Compare Source

NumPy 2.0.1 Release Notes

NumPy 2.0.1 is a maintenance release that fixes bugs and regressions discovered after the 2.0.0 release. NumPy 2.0.1 is the last planned release in the 2.0.x series, 2.1.0rc1 should be out shortly.

The Python versions supported by this release are 3.9-3.12.

NOTE: Do not use the GitHub generated "Source code" files listed in the "Assets", they are garbage.

Improvements

np.quantile with method closest_observation chooses nearest even order statistic

This changes the definition of nearest for border cases from the nearest odd order statistic to nearest even order statistic. The numpy implementation now matches other reference implementations.

(gh-26656)

Contributors

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

  • @​vahidmech +
  • Alex Herbert +
  • Charles Harris
  • Giovanni Del Monte +
  • Leo Singer
  • Lysandros Nikolaou
  • Matti Picus
  • Nathan Goldbaum
  • Patrick J. Roddy +
  • Raghuveer Devulapalli
  • Ralf Gommers
  • Rostan Tabet +
  • Sebastian Berg
  • Tyler Reddy
  • Yannik Wicke +

Pull requests merged

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

  • #​26711: MAINT: prepare 2.0.x for further development
  • #​26792: TYP: fix incorrect import in ma/extras.pyi stub
  • #​26793: DOC: Mention '1.25' legacy printing mode in set_printoptions
  • #​26794: DOC: Remove mention of NaN and NAN aliases from constants
  • #​26821: BLD: Fix x86-simd-sort build failure on openBSD
  • #​26822: BUG: Ensure output order follows input in numpy.fft
  • #​26823: TYP: fix missing sys import in numeric.pyi
  • #​26832: DOC: remove hack to override _add_newdocs_scalars
  • #​26835: BUG: avoid side-effect of 'include complex.h'
  • #​26836: BUG: fix max_rows and chunked string/datetime reading in loadtxt
  • #​26837: BUG: fix PyArray_ImportNumPyAPI under -Werror=strict-prototypes
  • #​26856: DOC: Update some documentation
  • #​26868: BUG: fancy indexing copy
  • #​26869: BUG: Mismatched allocation domains in PyArray_FillWithScalar
  • #​26870: BUG: Handle --f77flags and --f90flags for meson [wheel build]
  • #​26887: BUG: Fix new DTypes and new string promotion when signature is...
  • #​26888: BUG: remove numpy.f2py from excludedimports
  • #​26959: BUG: Quantile closest_observation to round to nearest even order
  • #​26960: BUG: Fix off-by-one error in amount of characters in strip
  • #​26961: API: Partially revert unique with return_inverse
  • #​26962: BUG,MAINT: Fix utf-8 character stripping memory access
  • #​26963: BUG: Fix out-of-bound minimum offset for in1d table method
  • #​26971: BUG: fix f2py tests to work with v2 API
  • #​26995: BUG: Add object cast to avoid warning with limited API

Checksums

MD5
a3e7d0f361ee7302448cae3c10844dd3  numpy-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl
cff8546b69e43ae7b5050f05bdc25df2  numpy-2.0.1-cp310-cp310-macosx_11_0_arm64.whl
1713d23342528f4f8f4027970f010068  numpy-2.0.1-cp310-cp310-macosx_14_0_arm64.whl
20020d28606ea58f986a262daa6018f1  numpy-2.0.1-cp310-cp310-macosx_14_0_x86_64.whl
db22154ea943a707917aebc79e449bc5  numpy-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
fe86cd85f240216f64eb076a62a229d2  numpy-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e0ca08f85150af3cc6050d64e8c0bd27  numpy-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl
b76f432906f62e31f0e09c41f3f08b4c  numpy-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
28e8109e4ef524fa5c272d6faec870ae  numpy-2.0.1-cp310-cp310-win32.whl
874beffaefdc73da42300ce691c2419c  numpy-2.0.1-cp310-cp310-win_amd64.whl
7bbe029f650c924e952da117842d456d  numpy-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl
6d3d6ae26c520e93cef7f11ba3951f57  numpy-2.0.1-cp311-cp311-macosx_11_0_arm64.whl
de6082d719437eb7468ae31c407c503e  numpy-2.0.1-cp311-cp311-macosx_14_0_arm64.whl
d15a8d95661f8a1dfcc4eb089f9b46e8  numpy-2.0.1-cp311-cp311-macosx_14_0_x86_64.whl
c181105e074ee575ccf2c992e40f947a  numpy-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
00d22b299343fcdc78fbb0716ead6243  numpy-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
d9c4f49dbedb3f3d0158f00db459bd25  numpy-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl
63caa03e0625327ad3a756e01c83a6ca  numpy-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
99d01d768a115d448ca2b4680de15191  numpy-2.0.1-cp311-cp311-win32.whl
8d1a31eccc8b9f077312095b11f62cb2  numpy-2.0.1-cp311-cp311-win_amd64.whl
6cc86f7761a33941d8c1c552186e774b  numpy-2.0.1-cp312-cp312-macosx_10_9_x86_64.whl
67c48f352afff5f41108f1b9561d1d5c  numpy-2.0.1-cp312-cp312-macosx_11_0_arm64.whl
1068d4eadcac6a869e0e457853b7e611  numpy-2.0.1-cp312-cp312-macosx_14_0_arm64.whl
dfb667450315fddcf84381fc8ef16892  numpy-2.0.1-cp312-cp312-macosx_14_0_x86_64.whl
69822bbbbb65d8a7d00ae32b435f61cc  numpy-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
883ed6c41395fb2def6cc0d64dcb817f  numpy-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
4b1e9fd464821a7d1de3a8ddf911311e  numpy-2.0.1-cp312-cp312-musllinux_1_1_x86_64.whl
79e6557f40b8ed8f5973b404d98eab3d  numpy-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
85596f15d4cf85c2f78b4cc12c2cad1e  numpy-2.0.1-cp312-cp312-win32.whl
487c7c2944306f62b3770576ce903a91  numpy-2.0.1-cp312-cp312-win_amd64.whl
491093641afa21e65d6e629eb70571fc  numpy-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl
5008b16c20f3d7e5a0c7764712f8908e  numpy-2.0.1-cp39-cp39-macosx_11_0_arm64.whl
14633b898f863ea797c40ba1cf226c29  numpy-2.0.1-cp39-cp39-macosx_14_0_arm64.whl
9054ecb69d21b364e59e94aab24247cb  numpy-2.0.1-cp39-cp39-macosx_14_0_x86_64.whl
be028cf4bb691921943939de17593dd7  numpy-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
9c440ad02ff0a954f696637de37aab2d  numpy-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
27aec0d286eabe26d8e9149f4572dba1  numpy-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl
b02eda82ee511ee27185c8a4073ea35c  numpy-2.0.1-cp39-cp39-musllinux_1_2_aarch64.whl
cf579b902325e023b2dc444692eb5991  numpy-2.0.1-cp39-cp39-win32.whl
302c8c3118a5f55d9ef35ed8e517f6b1  numpy-2.0.1-cp39-cp39-win_amd64.whl
34c17fe980accfb76c6f348f85b3cfef  numpy-2.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
02676eb84379b0a223288d6fd9d76942  numpy-2.0.1-pp39-pypy39_pp73-macosx_14_0_x86_64.whl
b5300e6fe110bf69e1a8901c5c09e3f8  numpy-2.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
204a3ea7fb851e08d166c74f73f9b8a3  numpy-2.0.1-pp39-pypy39_pp73-win_amd64.whl
5df3c50fc124c3167404d396115898d0  numpy-2.0.1.tar.gz
SHA256
0fbb536eac80e27a2793ffd787895242b7f18ef792563d742c2d673bfcb75134  numpy-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl
69ff563d43c69b1baba77af455dd0a839df8d25e8590e79c90fcbe1499ebde42  numpy-2.0.1-cp310-cp310-macosx_11_0_arm64.whl
1b902ce0e0a5bb7704556a217c4f63a7974f8f43e090aff03fcf262e0b135e02  numpy-2.0.1-cp310-cp310-macosx_14_0_arm64.whl
f1659887361a7151f89e79b276ed8dff3d75877df906328f14d8bb40bb4f5101  numpy-2.0.1-cp310-cp310-macosx_14_0_x86_64.whl
4658c398d65d1b25e1760de3157011a80375da861709abd7cef3bad65d6543f9  numpy-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
4127d4303b9ac9f94ca0441138acead39928938660ca58329fe156f84b9f3015  numpy-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e5eeca8067ad04bc8a2a8731183d51d7cbaac66d86085d5f4766ee6bf19c7f87  numpy-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl
9adbd9bb520c866e1bfd7e10e1880a1f7749f1f6e5017686a5fbb9b72cf69f82  numpy-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
7b9853803278db3bdcc6cd5beca37815b133e9e77ff3d4733c247414e78eb8d1  numpy-2.0.1-cp310-cp310-win32.whl
81b0893a39bc5b865b8bf89e9ad7807e16717f19868e9d234bdaf9b1f1393868  numpy-2.0.1-cp310-cp310-win_amd64.whl
75b4e316c5902d8163ef9d423b1c3f2f6252226d1aa5cd8a0a03a7d01ffc6268  numpy-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl
6e4eeb6eb2fced786e32e6d8df9e755ce5be920d17f7ce00bc38fcde8ccdbf9e  numpy-2.0.1-cp311-cp311-macosx_11_0_arm64.whl
a1e01dcaab205fbece13c1410253a9eea1b1c9b61d237b6fa59bcc46e8e89343  numpy-2.0.1-cp311-cp311-macosx_14_0_arm64.whl
a8fc2de81ad835d999113ddf87d1ea2b0f4704cbd947c948d2f5513deafe5a7b  numpy-2.0.1-cp311-cp311-macosx_14_0_x86_64.whl
5a3d94942c331dd4e0e1147f7a8699a4aa47dffc11bf8a1523c12af8b2e91bbe  numpy-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
15eb4eca47d36ec3f78cde0a3a2ee24cf05ca7396ef808dda2c0ddad7c2bde67  numpy-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b83e16a5511d1b1f8a88cbabb1a6f6a499f82c062a4251892d9ad5d609863fb7  numpy-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl
1f87fec1f9bc1efd23f4227becff04bd0e979e23ca50cc92ec88b38489db3b55  numpy-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
36d3a9405fd7c511804dc56fc32974fa5533bdeb3cd1604d6b8ff1d292b819c4  numpy-2.0.1-cp311-cp311-win32.whl
08458fbf403bff5e2b45f08eda195d4b0c9b35682311da5a5a0a0925b11b9bd8  numpy-2.0.1-cp311-cp311-win_amd64.whl
6bf4e6f4a2a2e26655717a1983ef6324f2664d7011f6ef7482e8c0b3d51e82ac  numpy-2.0.1-cp312-cp312-macosx_10_9_x86_64.whl
7d6fddc5fe258d3328cd8e3d7d3e02234c5d70e01ebe377a6ab92adb14039cb4  numpy-2.0.1-cp312-cp312-macosx_11_0_arm64.whl
5daab361be6ddeb299a918a7c0864fa8618af66019138263247af405018b04e1  numpy-2.0.1-cp312-cp312-macosx_14_0_arm64.whl
ea2326a4dca88e4a274ba3a4405eb6c6467d3ffbd8c7d38632502eaae3820587  numpy-2.0.1-cp312-cp312-macosx_14_0_x86_64.whl
529af13c5f4b7a932fb0e1911d3a75da204eff023ee5e0e79c1751564221a5c8  numpy-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
6790654cb13eab303d8402354fabd47472b24635700f631f041bd0b65e37298a  numpy-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
cbab9fc9c391700e3e1287666dfd82d8666d10e69a6c4a09ab97574c0b7ee0a7  numpy-2.0.1-cp312-cp312-musllinux_1_1_x86_64.whl
99d0d92a5e3613c33a5f01db206a33f8fdf3d71f2912b0de1739894668b7a93b  numpy-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
173a00b9995f73b79eb0191129f2455f1e34c203f559dd118636858cc452a1bf  numpy-2.0.1-cp312-cp312-win32.whl
bb2124fdc6e62baae159ebcfa368708867eb56806804d005860b6007388df171  numpy-2.0.1-cp312-cp312-win_amd64.whl
bfc085b28d62ff4009364e7ca34b80a9a080cbd97c2c0630bb5f7f770dae9414  numpy-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl
8fae4ebbf95a179c1156fab0b142b74e4ba4204c87bde8d3d8b6f9c34c5825ef  numpy-2.0.1-cp39-cp39-macosx_11_0_arm64.whl
72dc22e9ec8f6eaa206deb1b1355eb2e253899d7347f5e2fae5f0af613741d06  numpy-2.0.1-cp39-cp39-macosx_14_0_arm64.whl
ec87f5f8aca726117a1c9b7083e7656a9d0d606eec7299cc067bb83d26f16e0c  numpy-2.0.1-cp39-cp39-macosx_14_0_x86_64.whl
1f682ea61a88479d9498bf2091fdcd722b090724b08b31d63e022adc063bad59  numpy-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
8efc84f01c1cd7e34b3fb310183e72fcdf55293ee736d679b6d35b35d80bba26  numpy-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
3fdabe3e2a52bc4eff8dc7a5044342f8bd9f11ef0934fcd3289a788c0eb10018  numpy-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl
24a0e1befbfa14615b49ba9659d3d8818a0f4d8a1c5822af8696706fbda7310c  numpy-2.0.1-cp39-cp39-musllinux_1_2_aarch64.whl
f9cf5ea551aec449206954b075db819f52adc1638d46a6738253a712d553c7b4  numpy-2.0.1-cp39-cp39-win32.whl
e9e81fa9017eaa416c056e5d9e71be93d05e2c3c2ab308d23307a8bc4443c368  numpy-2.0.1-cp39-cp39-win_amd64.whl
61728fba1e464f789b11deb78a57805c70b2ed02343560456190d0501ba37b0f  numpy-2.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
12f5d865d60fb9734e60a60f1d5afa6d962d8d4467c120a1c0cda6eb2964437d  numpy-2.0.1-pp39-pypy39_pp73-macosx_14_0_x86_64.whl
eacf3291e263d5a67d8c1a581a8ebbcfd6447204ef58828caf69a5e3e8c75990  numpy-2.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
2c3a346ae20cfd80b6cfd3e60dc179963ef2ea58da5ec074fd3d9e7a1e7ba97f  numpy-2.0.1-pp39-pypy39_pp73-win_amd64.whl
485b87235796410c3519a699cfe1faab097e509e90ebb05dcd098db2ae87e7b3  numpy-2.0.1.tar.gz

v2.0.0

Compare Source

NumPy 2.0.0 Release Notes

NumPy 2.0.0 is the first major release since 2006. It is the result of 11 months of development since the last feature release and is the work of 212 contributors spread over 1078 pull requests. It contains a large number of exciting new features as well as changes to both the Python and C APIs.

This major release includes breaking changes that could not happen in a regular minor (feature) release - including an ABI break, changes to type promotion rules, and API changes which may not have been emitting deprecation warnings in 1.26.x. Key documents related to how to adapt to changes in NumPy 2.0, in addition to these release notes, include:

Highlights

Highlights of this release include:

  • New features:
    • A new variable-length string dtype, numpy.dtypes.StringDType and a new numpy.strings namespace with performant ufuncs for string operations,
    • Support for float32 and longdouble in all numpy.fft functions,
    • Support for the array API standard in the main numpy namespace.
  • Performance improvements:
    • Sorting functions sort, argsort, partition, argpartition have been accelerated through the use of the Intel x86-simd-sort and Google Highway libraries, and may see large (hardware-specific) speedups,
    • macOS Accelerate support and binary wheels for macOS >=14, with significant performance improvements for linear algebra operations on macOS, and wheels that are about 3 times smaller,
    • numpy.char fixed-length string operations have been accelerated by implementing ufuncs that also support numpy.dtypes.StringDType in addition to the fixed-length string dtypes,
    • A new tracing and introspection API, numpy.lib.introspect.opt_func_info, to determine which hardware-specific kernels are available and will be dispatched to.
    • numpy.save now uses pickle protocol version 4 for saving arrays with object dtype, which allows for pickle objects larger than 4GB and improves saving speed by about 5% for large arrays.
  • Python API improvements:
    • A clear split between public and private API, with a new module structure and each public function now available in a single place.
    • Many removals of non-recommended functions and aliases. This should make it easier to learn and use NumPy. The number of objects in the main namespace decreased by ~10% and in numpy.lib by ~80%.
    • Canonical dtype names and a new numpy.isdtype` introspection function,
  • C API improvements:
    • A new public C API for creating custom dtypes,
    • Many outdated functions and macros removed, and private internals hidden to ease future extensibility,
    • New, easier to use, initialization functions: PyArray_ImportNumPyAPI and PyUFunc_ImportUFuncAPI.
  • Improved behavior:
    • Improvements to type promotion behavior was changed by adopting NEP 50. This fixes many user surprises about promotions which previously often depended on data values of input arrays rather than only their dtypes. Please see the NEP and the numpy-2-migration-guide for details as this change can lead to changes in output dtypes and lower precision results for mixed-dtype operations.
    • The default integer type on Windows is now int64 rather than int32, matching the behavior on other platforms,
    • The maximum number of array dimensions is changed from 32 to 64
  • Documentation:
    • The reference guide navigation was significantly improved, and there is now documentation on NumPy's module structure,
    • The building from source documentation was completely rewritten,

Furthermore there are many changes to NumPy internals, including continuing to migrate code from C to C++, that will make it easier to improve and maintain NumPy in the future.

The "no free lunch" theorem dictates that there is a price to pay for all these API and behavior improvements and better future extensibility. This price is:

  1. Backwards compatibility. There are a significant number of breaking changes to both the Python and C APIs. In the majority of cases, there are clear error messages that will inform the user how to adapt their code. However, there are also changes in behavior for which it was not possible to give such an error message - these cases are all covered in the Deprecation and Compatibility sections below, and in the numpy-2-migration-guide.

    Note that there is a ruff mode to auto-fix many things in Python code.

  2. Breaking changes to the NumPy ABI. As a result, binaries of packages that use the NumPy C API and were built against a NumPy 1.xx release will not work with NumPy 2.0. On import, such packages will see an ImportError with a message about binary incompatibility.

    It is possible to build binaries against NumPy 2.0 that will work at runtime with both NumPy 2.0 and 1.x. See numpy-2-abi-handling for more details.

    All downstream packages that depend on the NumPy ABI are advised to do a new release built against NumPy 2.0 and verify that that release works with both 2.0 and 1.26 - ideally in the period between 2.0.0rc1 (which will be ABI-stable) and the final 2.0.0 release to avoid problems for their users.

The Python versions supported by this release are 3.9-3.12.

NumPy 2.0 Python API removals

  • np.geterrobj, np.seterrobj and the related ufunc keyword argument extobj= have been removed. The preferred replacement for all of these is using the context manager with np.errstate():.

    (gh-23922)

  • np.cast has been removed. The literal replacement for np.cast[dtype](arg) is np.asarray(arg, dtype=dtype).

  • np.source has been removed. The preferred replacement is inspect.getsource.

  • np.lookfor has been removed.

    (gh-24144)

  • numpy.who has been removed. As an alternative for the removed functionality, one can use a variable explorer that is available in IDEs such as Spyder or Jupyter Notebook.

    (gh-24321)

  • Warnings and exceptions present in numpy.exceptions, e.g, numpy.exceptions.ComplexWarning, numpy.exceptions.VisibleDeprecationWarning, are no longer exposed in the main namespace.

  • Multiple niche enums, expired members and functions have been removed from the main namespace, such as: ERR_*, SHIFT_*, np.fastCopyAndTranspose, np.kernel_version, np.numarray, np.oldnumeric and np.set_numeric_ops.

    (gh-24316)

  • Replaced from ... import * in the numpy/__init__.py with explicit imports. As a result, these main namespace members got removed: np.FLOATING_POINT_SUPPORT, np.FPE_*, np.NINF, np.PINF, np.NZERO, np.PZERO, np.CLIP, np.WRAP, np.WRAP, np.RAISE, np.BUFSIZE, np.UFUNC_BUFSIZE_DEFAULT, np.UFUNC_PYVALS_NAME, np.ALLOW_THREADS, np.MAXDIMS, np.MAY_SHARE_EXACT, np.MAY_SHARE_BOUNDS, add_newdoc, np.add_docstring and np.add_newdoc_ufunc.

    (gh-24357)

  • Alias np.float_ has been removed. Use np.float64 instead.

  • Alias np.complex_ has been removed. Use np.complex128 instead.

  • Alias np.longfloat has been removed. Use np.longdouble instead.

  • Alias np.singlecomplex has been removed. Use np.complex64 instead.

  • Alias np.cfloat has been removed. Use np.complex128 instead.

  • Alias np.longcomplex has been removed. Use np.clongdouble instead.

  • Alias np.clongfloat has been removed. Use np.clongdouble instead.

  • Alias np.string_ has been removed. Use np.bytes_ instead.

  • Alias np.unicode_ has been removed. Use np.str_ instead.

  • Alias np.Inf has been removed. Use np.inf instead.

  • Alias np.Infinity has been removed. Use np.inf instead.

  • Alias np.NaN has been removed. Use np.nan instead.

  • Alias np.infty has been removed. Use np.inf instead.

  • Alias np.mat has been removed. Use np.asmatrix instead.

  • np.issubclass_ has been removed. Use the issubclass builtin instead.

  • np.asfarray has been removed. Use np.asarray with a proper dtype instead.

  • np.set_string_function has been removed. Use np.set_printoptions instead with a formatter for custom printing of NumPy objects.

  • np.tracemalloc_domain is now only available from np.lib.

  • np.recfromcsv and recfromtxt are now only available from np.lib.npyio.

  • np.issctype, np.maximum_sctype, np.obj2sctype, np.sctype2char, np.sctypes, np.issubsctype were all removed from the main namespace without replacement, as they where niche members.

  • Deprecated np.deprecate and np.deprecate_with_doc has been removed from the main namespace. Use DeprecationWarning instead.

  • Deprecated np.safe_eval has been removed from the main namespace. Use ast.literal_eval instead.

    (gh-24376)

  • np.find_common_type has been removed. Use numpy.promote_types or numpy.result_type instead. To achieve semantics for the scalar_types argument, use numpy.result_type and pass 0, 0.0, or 0j as a Python scalar instead.

  • np.round_ has been removed. Use np.round instead.

  • np.nbytes has been removed. Use np.dtype(<dtype>).itemsize instead.

    (gh-24477)

  • np.compare_chararrays has been removed from the main namespace. Use np.char.compare_chararrays instead.

  • The charrarray in the main namespace has been deprecated. It can be imported without a deprecation warning from np.char.chararray for now, but we are planning to fully deprecate and remove chararray in the future.

  • np.format_parser has been removed from the main namespace. Use np.rec.format_parser instead.

    (gh-24587)

  • Support for seven data type string aliases has been removed from np.dtype: int0, uint0, void0, object0, str0, bytes0 and bool8.

    (gh-24807)

  • The experimental numpy.array_api submodule has been removed. Use the main numpy namespace for regular usage instead, or the separate array-api-strict package for the compliance testing use case for which numpy.array_api was mostly used.

    (gh-25911)

__array_prepare__ is removed

UFuncs called __array_prepare__ before running computations for normal ufunc calls (not generalized ufuncs, reductions, etc.). The function was also called instead of __array_wrap__ on the results of some linear algebra functions.

It is now removed. If you use it, migrate to __array_ufunc__ or rely on __array_wrap__ which is called with a context in all cases, although only after the result array is filled. In those code paths, __array_wrap__ will now be passed a base class, rather than a subclass array.

(gh-25105)

Deprecations

  • np.compat has been deprecated, as Python 2 is no longer supported.

  • numpy.int8 and similar classes will no longer support conversion of out of bounds python integers to integer arrays. For example, conversion of 255 to int8 will not return -1. numpy.iinfo(dtype) can be used to check the machine limits for data types. For example, np.iinfo(np.uint16) returns min = 0 and max = 65535.

    np.array(value).astype(dtype) will give the desired result.

  • np.safe_eval has been deprecated. ast.literal_eval should be used instead.

    (gh-23830)

  • np.recfromcsv, np.recfromtxt, np.disp, np.get_array_wrap, np.maximum_sctype, np.deprecate and np.deprecate_with_doc have been deprecated.

    (gh-24154)

  • np.trapz has been deprecated. Use np.trapezoid or a scipy.integrate function instead.

  • np.in1d has been deprecated. Use np.isin instead.

  • Alias np.row_stack has been deprecated. Use np.vstack directly.

    (gh-24445)

  • __array_wrap__ is now passed arr, context, return_scalar and support for implementations not accepting all three are deprecated. Its signature should be __array_wrap__(self, arr, context=None, return_scalar=False)

    (gh-25409)

  • Arrays of 2-dimensional vectors for np.cross have been deprecated. Use arrays of 3-dimensional vectors instead.

    (gh-24818)

  • np.dtype("a") alias for np.dtype(np.bytes_) was deprecated. Use np.dtype("S") alias instead.

    (gh-24854)

  • Use of keyword arguments x and y with functions assert_array_equal and assert_array_almost_equal has been deprecated. Pass the first two arguments as positional arguments instead.

    (gh-24978)

numpy.fft deprecations for n-D transforms with None values in arguments

Using fftn, ifftn, rfftn, irfftn, fft2, ifft2, rfft2 or irfft2 with the s parameter set to a value that is not None and the axes parameter set to None has been deprecated, in line with the array API standard. To retain current behaviour, pass a sequence [0, ..., k-1] to axes for an array of dimension k.

Furthermore, passing an array to s which contains None values is deprecated as the parameter is documented to accept a sequence of integers in both the NumPy docs and the array API specification. To use the default behaviour of the corresponding 1-D transform, pass the value matching the default for its n parameter. To use the default behaviour for every axis, the s argument can be omitted.

(gh-25495)

np.linalg.lstsq now defaults to a new rcond value

numpy.linalg.lstsq now uses the new rcond value of the machine precision times max(M, N). Previously, the machine precision was used but a FutureWarning was given to notify that this change will happen eventually. That old behavior can still be achieved by passing rcond=-1.

(gh-25721)

Expired deprecations

  • The np.core.umath_tests submodule has been removed from the public API. (Deprecated in NumPy 1.15)

    (gh-23809)

  • The PyDataMem_SetEventHook deprecation has expired and it is removed. Use tracemalloc and the np.lib.tracemalloc_domain domain. (Deprecated in NumPy 1.23)

    (gh-23921)

  • The deprecation of set_numeric_ops and the C functions PyArray_SetNumericOps and PyArray_GetNumericOps has been expired and the functions removed. (Deprecated in NumPy 1.16)

    (gh-23998)

  • The fasttake, fastclip, and fastputmask ArrFuncs deprecation is now finalized.

  • The deprecated function fastCopyAndTranspose and its C counterpart are now removed.

  • The deprecation of PyArray_ScalarFromObject is now finalized.

    (gh-24312)

  • np.msort has been removed. For a replacement, np.sort(a, axis=0) should be used instead.

    (gh-24494)

  • np.dtype(("f8", 1) will now return a shape 1 subarray dtype rather than a non-subarray one.

    (gh-25761)

  • Assigning to the .data attribute of an ndarray is disallowed and will raise.

  • np.binary_repr(a, width) will raise if width is too small.

  • Using NPY_CHAR in PyArray_DescrFromType() will raise, use NPY_STRING NPY_UNICODE, or NPY_VSTRING instead.

    (gh-25794)

Compatibility notes

loadtxt and genfromtxt default encoding changed

loadtxt and genfromtxt now both default to encoding=None which may mainly modify how converters work. These will now be passed str rather than bytes. Pass the encoding explicitly to always get the new or old behavior. For genfromtxt the change also means that returned values will now be unicode strings rather than bytes.

(gh-25158)

f2py compatibility notes
  • f2py will no longer accept ambiguous -m and .pyf CLI combinations. When more than one .pyf file is passed, an error is raised. When both -m and a .pyf is passed, a warning is emitted and the -m provided name is ignored.

    (gh-25181)

  • The f2py.compile() helper has been removed because it leaked memory, has been marked as experimental for several years now, and was implemented as a thin subprocess.run wrapper. It was also one of the test bottlenecks. See gh-25122 for the full rationale. It also used several np.distutils features which are too fragile to be ported to work with meson.

  • Users are urged to replace calls to f2py.compile with calls to subprocess.run("python", "-m", "numpy.f2py",... instead, and to use environment variables to interact with meson. Native files are also an option.

    (gh-25193)

Minor changes in behavior of sorting functions

Due to algorithmic changes and use of SIMD code, sorting functions with methods that aren't stable may return slightly different results in 2.0.0 compared to 1.26.x. This includes the default method of numpy.argsort and numpy.argpartition.

Removed ambiguity when broadcasting in np.solve

The broadcasting rules for np.solve(a, b) were ambiguous when b had 1 fewer dimensions than a. This has been resolved in a backward-incompatible way and is now compliant with the Array API. The old behaviour can be reconstructed by using np.solve(a, b[..., None])[..., 0].

(gh-25914)

Modified representation for Polynomial

The representation method for numpy.polynomial.polynomial.Polynomial was updated to include the domain in the representation. The plain text and latex representations are now consistent. For example the output of str(np.polynomial.Polynomial([1, 1], domain=[.1, .2])) used to be 1.0 + 1.0 x, but now is 1.0 + 1.0 (-3.0000000000000004 + 20.0 x).

(gh-21760)

C API changes

  • The PyArray_CGT, PyArray_CLT, PyArray_CGE, PyArray_CLE, PyArray_CEQ, PyArray_CNE macros have been removed.

  • PyArray_MIN and PyArray_MAX have been moved from ndarraytypes.h to npy_math.h.

    (gh-24258)

  • A C API for working with numpy.dtypes.StringDType arrays has been exposed. This includes functions for acquiring and releasing mutexes which lock access to the string data, as well as packing and unpacking UTF-8 bytestreams from array entries.

  • NPY_NTYPES has been renamed to NPY_NTYPES_LEGACY as it does not include new NumPy built-in DTypes. In particular the new string DType will likely not work correctly with code that handles legacy DTypes.

    (gh-25347)

  • The C-API now only exports the static inline function versions of the array accessors (previously this depended on using "deprecated API"). While we discourage it, the struct fields can still be used directly.

    (gh-25789)

  • NumPy now defines PyArray_Pack to set an individual memory address. Unlike PyArray_SETITEM this function is equivalent to setting an individual array item and does not require a NumPy array input.

    (gh-25954)

  • The ->f slot has been removed from PyArray_Descr. If you use this slot, replace accessing it with PyDataType_GetArrFuncs (see its documentation and the numpy-2-migration-guide). In some cases using other functions like PyArray_GETITEM may be an alternatives.

  • PyArray_GETITEM and PyArray_SETITEM now require the import of the NumPy API table to be used and are no longer defined in ndarraytypes.h.

    (gh-25812)

  • Due to runtime dependencies, the definition for functionality accessing the dtype flags was moved from numpy/ndarraytypes.h and is only available after including numpy/ndarrayobject.h as it requires import_array(). This includes PyDataType_FLAGCHK, PyDataType_REFCHK and NPY_BEGIN_THREADS_DESCR.

  • The dtype flags on PyArray_Descr must now be accessed through the PyDataType_FLAGS inline function to be compatible with both 1.x and 2.x. This function is defined in npy_2_compat.h to allow backporting. Most or all users should use PyDataType_FLAGCHK which is available on 1.x and does not require backporting. Cython users should use Cython 3. Otherwise access will go through Python unless they use PyDataType_FLAGCHK instead.

    (gh-25816)

Datetime functionality exposed in the C API and Cython bindings

The functions NpyDatetime_ConvertDatetime64ToDatetimeStruct, NpyDatetime_ConvertDatetimeStructToDatetime64, NpyDatetime_ConvertPyDateTimeToDatetimeStruct, NpyDatetime_GetDatetimeISO8601StrLen, NpyDatetime_MakeISO8601Datetime, and NpyDatetime_ParseISO8601Datetime have been added to the C API to facilitate converting between strings, Python datetimes, and NumPy datetimes in external libraries.

(gh-21199)

Const correctness for the generalized ufunc C API

The NumPy C API's functions for constructing generalized ufuncs (PyUFunc_FromFuncAndData, PyUFunc_FromFuncAndDataAndSignature, PyUFunc_FromFuncAndDataAndSignatureAndIdentity) take types and data arguments that are not modified by NumPy's internals. Like the name and doc arguments, third-party Python extension modules are likely to supply these arguments from static constants. The types and data arguments are now const-correct: they are declared as const char *types and void *const *data, respectively. C code should not be affected, but C++ code may be.

(gh-23847)

Larger NPY_MAXDIMS and NPY_MAXARGS, NPY_RAVEL_AXIS introduced

NPY_MAXDIMS is now 64, you may want to review its use. This is usually used in a stack allocation, where the increase should be safe. However, we do encourage generally to remove any use of NPY_MAXDIMS and NPY_MAXARGS to eventually allow removing the constraint completely. For the conversion helper and C-API functions mirroring Python ones such as take, NPY_MAXDIMS was used to mean axis=None. Such usage must be replaced with NPY_RAVEL_AXIS. See also migration_maxdims.

(gh-25149)

NPY_MAXARGS not constant and PyArrayMultiIterObject size change

Since NPY_MAXARGS was increased, it is now a runtime constant and not compile-time constant anymore. We expect almost no users to notice this. But if used for stack allocations it now must be replaced with a custom constant using NPY_MAXARGS as an additional runtime check.

The sizeof(PyArrayMultiIterObject) no longer includes the full size of the object. We expect nobody to notice this change. It was necessary to avoid issues with Cython.

(gh-25271)

Required changes for custom legacy user dtypes

In order to improve our DTypes it is unfortunately necessary to break the ABI, which requires some changes for dtypes registered with PyArray_RegisterDataType. Please see the documentation of PyArray_RegisterDataType for how to adapt your code and achieve compatibility with both 1.x and 2.x.

(gh-25792)

New Public DType API

The C implementation of the NEP 42 DType API is now public. While the DType API has shipped in NumPy for a few versions, it was only usable in sessions with a special environment variable set. It is now possible to write custom DTypes outside of NumPy using the new DType API and the normal import_array() mechanism for importing the numpy C API.

See dtype-api for more details about the API. As always with a new feature, please report any bugs you run into implementing or using a new DType. It is likely that downstream C code that works with dtypes will need to be updated to work correctly with new DTypes.

(gh-25754)

New C-API import functions

We have now added PyArray_ImportNumPyAPI and PyUFunc_ImportUFuncAPI as static inline functions to import the NumPy C-API tables. The new functions have two advantages over import_array and import_ufunc:

  • They check whether the import was already performed and are light-weight if not, allowing to add them judiciously (although this is not preferable in most cases).
  • The old mechanisms were macros rather than functions which included a return statement.

The PyArray_ImportNumPyAPI() function is included in npy_2_compat.h for simpler backporting.

(gh-25866)

Structured dtype information access through functions

The dtype structures fields c_metadata, names, fields, and subarray must now be accessed through new functions following the same names, such as PyDataType_NAMES. Direct access of the fields is not valid as they do not exist for all PyArray_Descr instances. The metadata field is kept, but the macro version should also be preferred.

(gh-25802)

Descriptor elsize and alignment access

Unless compiling only with NumPy 2 support, the elsize and aligment fields must now be accessed via PyDataType_ELSIZE, PyDataType_SET_ELSIZE, and PyDataType_ALIGNMENT. In cases where the descriptor is attached to an array, we advise using PyArray_ITEMSIZE as it exists on all NumPy versions. Please see migration_c_descr for more information.

(gh-25943)

NumPy 2.0 C API removals

  • npy_interrupt.h and the corresponding macros like NPY_SIGINT_ON have been removed. We recommend querying PyErr_CheckSignals() or PyOS_InterruptOccurred() periodically (these do currently require holding the GIL though).

  • The noprefix.h header has been removed. Replace missing symbols with their prefixed counterparts (usually an added NPY_ or npy_).

    (gh-23919)

  • PyUFunc_GetPyVals, PyUFunc_handlefperr, and PyUFunc_checkfperr have been removed. If needed, a new backwards compatible function to raise floating point errors could be restored. Reason for removal: there are no known users and the functions would have made with np.errstate() fixes much more difficult).

    (gh-23922)

  • The numpy/old_defines.h which was part of the API deprecated since NumPy 1.7 has been removed. This removes macros of the form PyArray_CONSTANT. The replace_old_macros.sed script may be useful to convert them to the NPY_CONSTANT version.

    (gh-24011)

  • The legacy_inner_loop_selector member of the ufunc struct is removed to simplify improvements to the dispatching system. There are no known users overriding or directly accessing this member.

    (gh-24271)

  • NPY_INTPLTR has been removed to avoid confusion (see intp redefinition).

    (gh-24888)

  • The advanced indexing MapIter and related API has been removed. The (truly) public part of it was not well tested and had only one known user (Theano). Making it private will simplify improvements to speed up ufunc.at, make advanced indexing more maintainable, and was important for increasing the maximum number of dimensions of arrays to 64. Please let us know if this API is important to you so we can find a solution together.

    (gh-25138)

  • The NPY_MAX_ELSIZE macro has been removed, as it only ever reflected builtin numeric types and served no internal purpose.

    (gh-25149)

  • PyArray_REFCNT and NPY_REFCOUNT are removed. Use Py_REFCNT instead.

    (gh-25156)

  • PyArrayFlags_Type and PyArray_NewFlagsObject as well as PyArrayFlagsObject are private now. There is no known use-case; use the Python API if needed.

  • PyArray_MoveInto, PyArray_CastTo, PyArray_CastAnyTo are removed use PyArray_CopyInto and if absolutely needed PyArray_CopyAnyInto (the latter does a flat copy).

  • PyArray_FillObjectArray is removed, its only true use was for implementing np.empty. Create a new empty array or use PyArray_FillWithScalar() (decrefs existing objects).

  • PyArray_CompareUCS4 and PyArray_CompareString are removed. Use the standard C string comparison functions.

  • PyArray_ISPYTHON is removed as it is misleading, has no known use-cases, and is easy to replace.

  • PyArray_FieldNames is removed, as it is unclear what it would be useful for. It also has incorrect semantics in some possible use-cases.

  • PyArray_TypestrConvert is removed, since it seems a misnomer and unlikely to be used by anyone. If you know the size or are limited to few types, just use it explicitly, otherwise go via Python strings.

    (gh-25292)

  • PyDataType_GetDatetimeMetaData is removed, it did not actually do anything since at least NumPy 1.7.

    (gh-25802)

  • PyArray_GetCastFunc is removed. Note that custom legacy user dtypes can still provide a castfunc as their implementation, but any access to them is now removed. The reason for this is that NumPy never used these internally for many years. If you use simple numeric types, please just use C casts directly. In case you require an alternative, please let us know so we can create new API such as PyArray_CastBuffer() which could use old or new cast functions depending on the NumPy version.

    (gh-25161)

New Features

np.add was extended to work with unicode and bytes dtypes.

(gh-24858)

A new bitwise_count function

This new function counts the number of 1-bits in a number. numpy.bitwise_count works on all the numpy integer types and integer-like objects.

>>> a = np.array([2**i - 1 for i in range(16)])
>>> np.bitwise_count(a)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
      dtype=uint8)

(gh-19355)

macOS Accelerate support, including the ILP64

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, or if no explicit BLAS library selection is done, the 13.3+ version will automatically be used if available.

(gh-24053)

Binary wheels are also available. On macOS >=14.0, users who install NumPy from PyPI will get wheels built against Accelerate rather than OpenBLAS.

(gh-25255)

Option to use weights for quantile and percentile functions

A weights keyword is now available for numpy.quantile, numpy.percentile, numpy.nanquantile and numpy.nanpercentile. Only method="inverted_cdf" supports weights.

(gh-24254)

Improved CPU optimization tracking

A new tracer mechanism is available which enables tracking of the enabled targets for each optimized function (i.e., that uses hardware-specific SIMD instructions) in the NumPy library. With this enhancement, it becomes possible to precisely monitor the enabled CPU dispatch targets for the dispatched functions.

A new function named opt_func_info has been added to the new namespace numpy.lib.introspect, offering this tracing capability. This function allows you to retrieve information about the enabled targets based on function names and data type signatures.

(gh-24420)

A new 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. For older Python versions, f2py 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)

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)

A new strict option for several testing functions

The strict keyword is now available for numpy.testing.assert_allclose, numpy.testing.assert_equal, and numpy.testing.assert_array_less. Setting strict=True will disable the broadcasting behaviour for scalars and ensure that input arrays have the same data type.

(gh-24680, gh-24770, gh-24775)

Add np.core.umath.find and np.core.umath.rfind UFuncs

Add two find and rfind UFuncs that operate on unicode or byte strings and are used in np.char. They operate similar to str.find and str.rfind.

(gh-24868)

diagonal and trace for numpy.linalg

numpy.linalg.diagonal and numpy.linalg.trace have been added, which are array API standard-compatible variants of numpy.diagonal and numpy.trace. They differ in the default axis selection which define 2-D sub-arrays.

(gh-24887)

New long and ulong dtypes

numpy.long and numpy.ulong have been added as NumPy integers mapping to C's long and unsigned long. Prior to NumPy 1.24, numpy.long was an alias to Python's int.

(gh-24922)

svdvals for numpy.linalg

numpy.linalg.svdvals has been added. It computes singular values for (a stack of) matrices. Executing np.svdvals(x) is the same as calling np.svd(x, compute_uv=False, hermitian=False). This function is compatible with the array API standard.

(gh-24940)

A new isdtype function

numpy.isdtype was added to provide a canonical way to classify NumPy's dtypes in compliance with the array API standard.

(gh-25054)

A new astype function

numpy.astype was added to provide an array API standard-compatible alternative to the numpy.ndarray.astype method.

(gh-25079)

Array API compatible functions' aliases

13 aliases for existing functions were added to improve compatibility with the array API standard:

  • Trigonometry: acos, acosh, asin, asinh, atan, atanh, atan2.
  • Bitwise: bitwise_left_shift, bitwise_invert, bitwise_right_shift.
  • Misc: concat, permute_dims, pow.
  • In numpy.linalg: tensordot, matmul.

(gh-25086)

New unique_* functions

The numpy.unique_all, numpy.unique_counts, numpy.unique_inverse, and numpy.unique_values functions have been added. They provide functionality of numpy.unique with different sets of flags. They are array API standard-compatible, and because the number of arrays they return does not depend on the values of input arguments, they are easier to target for JIT compilation.

(gh-25088)

Matrix transpose support for ndarrays

NumPy now offers support for calculating the matrix transpose of an array (or stack of arrays). The matrix transpose is equivalent to swapping the last two axes of an array. Both np.ndarray and np.ma.MaskedArray now expose a .mT attribute, and there is a matching new numpy.matrix_transpose function.

(gh-23762)

Array API compatible functions for numpy.linalg

Six new functions and two aliases were added to improve compatibility with the Array API standard for `numpy.linalg`:

  • numpy.linalg.matrix_norm - Computes the matrix norm of a matrix (or a stack of matrices).

  • numpy.linalg.vector_norm - Computes the vector norm of a vector (or batch of vectors).

  • numpy.vecdot - Computes the (vector) dot product of two arrays.

  • numpy.linalg.vecdot - An alias for numpy.vecdot.

  • numpy.linalg.matrix_transpose - An alias for numpy.matrix_transpose.

    (gh-25155)

  • numpy.linalg.outer has been added. It computes the outer product of two vectors. It differs from numpy.outer by accepting one-dimensional arrays only. This function is compatible with the array API standard.

    (gh-25101)

  • numpy.linalg.cross has been added. It computes the cross product of two (arrays of) 3-dimensional vectors. It differs from numpy.cross by accepting three-dimensional vectors only. This function is compatible with the array API standard.

    (gh-25145)

A correction argument for var and std

A correction argument was added to numpy.var and numpy.std, which is an array API standard compatible alternative to ddof. As both arguments serve a similar purpose, only one of them can be provided at the same time.

(gh-25169)

ndarray.device and ndarray.to_device

An ndarray.device attribute and ndarray.to_device method were added to numpy.ndarray for array API standard compatibility.

Additionally, device keyword-only arguments were added to: numpy.asarray, numpy.arange, numpy.empty, numpy.empty_like, numpy.eye, numpy.full, numpy.full_like, numpy.linspace, numpy.ones, numpy.ones_like, numpy.zeros, and numpy.zeros_like.

For all these new arguments, only device="cpu" is supported.

(gh-25233)

StringDType has been added to NumPy

We have added a new variable-width UTF-8 encoded string data type, implementing a "NumPy array of Python strings", including support for a user-provided missing data sentinel. It is intended as a drop-in replacement for arrays of Python strings and missing data sentinels using the object dtype. See NEP 55 and the documentation of stringdtype for more details.

(gh-25347)

New keywords for cholesky and pinv

The upper and rtol keywords were added to numpy.linalg.cholesky and numpy.linalg.pinv, respectively, to improve array API standard compatibility.

For numpy.linalg.pinv, if neither rcond nor rtol is specified, the rcond's default is used. We plan to deprecate and remove rcond in the future.

(gh-25388)

New keywords for sort, argsort and linalg.matrix_rank

New keyword parameters were added to improve array API standard compatibility:

  • rtol was added to numpy.linalg.matrix_rank.
  • stable was added to numpy.sort and numpy.argsort.

(gh-25437)

New numpy.strings namespace for string ufuncs

NumPy now implements some string operations as ufuncs. The old np.char namespace is still available, and where possible the string manipulation functions in that namespace have been updated to use the new ufuncs, substantially improving their performance.

Where possible, we suggest updating code to use functions in np.strings instead of np.char. In the future we may deprecate np.char in favor of np.strings.

(gh-25463)

numpy.fft support for different precisions and in-place calculations

The various FFT routines in numpy.fft now do their calculations natively in float, double, or long double precision, depending on the input precision, instead of always calculating in double precision. Hence, the calculation will now be less precise for single and more precise for long double precision. The data type of the output array will now be adjusted accordingly.

Furthermore, all FFT routines have gained an out argument that can be used for in-place calculations.

(gh-25536)

configtool and pkg-config support

A new numpy-config CLI script is available that can be queried for the NumPy version and for compile flags needed to use the NumPy C API. This will allow build systems to better support the use of NumPy as a dependency. Also, a numpy.pc pkg-config file is now included with Numpy. In order to find its location for use with PKG_CONFIG_PATH, use numpy-config --pkgconfigdir.

(gh-25730)

Array API standard support in the main namespace

The main numpy namespace now supports the array API standard. See array-api-standard-compatibility for details.

(gh-25911)

Improvements

Strings are now supported by any, all, and the logical ufuncs.

(gh-25651)

Integer sequences as the shape argument for memmap

numpy.memmap can now be created with any integer sequence as the shape argument, such as a list or numpy array of integers. Previously, only the types of tuple and int could be used without raising an error.

(gh-23729)

errstate is now faster and context safe

The numpy.errstate context manager/decorator is now faster and safer. Previously, it was not context safe and had (rare) issues with thread-safety.

(gh-23936)

AArch64 quicksort speed improved by using Highway's VQSort

The first introduction of the Google Highway library, using VQSort on AArch64. Execution time is improved by up to 16x in some cases, see the MR for benchmark results. Extensions to other platforms will be done in the future.

(gh-24018)

Complex types - underlying C type changes
  • The underlying C types for all of NumPy's complex types have been changed to use C99 complex types.

  • While this change does not affect the memory layout of complex types, it changes the API to be used to directly retrieve or write the real or complex part of the complex number, since direct field access (as in c.real or c.imag) is no longer an option. You can now use utilities provided in numpy/npy_math.h to do these operations, like this:

    npy_cdouble c;
    npy_csetreal(&c, 1.0);
    npy_csetimag(&c, 0.0);
    printf("%d + %di\n", npy_creal(c), npy_cimag(c));
  • To ease cross-version compatibility, equivalent macros and a compatibility layer have been added which can be used by downstream packages to continue to support both NumPy 1.x and 2.x. See complex-numbers for more info.

  • numpy/npy_common.h now includes complex.h, which means that complex is now a reserved keyword.

(gh-24085)

iso_c_binding support and improved common blocks 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)

f2py now handles common blocks which have kind specifications from modules. This further expands the usability of intrinsics like iso_fortran_env and iso_c_binding.

(gh-25186)

Call str automatically on third argument to functions like assert_equal

The third argument to functions like numpy.testing.assert_equal now has str called on it automatically. This way it mimics the built-in assert statement, where assert_equal(a, b, obj) works like assert a == b, obj.

(gh-24877)

Support for array-like atol/rtol in isclose, allclose

The keywords atol and rtol in numpy.isclose and numpy.allclose now accept both scalars and arrays. An array, if given, must broadcast to the shapes of the first two array arguments.

(gh-24878)

Consistent failure messages in test functions

Previously, some numpy.testing assertions printed messages that referred to the actual and desired results as x and y. Now, these values are consistently referred to as ACTUAL and DESIRED.

(gh-24931)

n-D FFT transforms allow s[i] == -1

The numpy.fft.fftn, numpy.fft.ifftn, numpy.fft.rfftn, numpy.fft.irfftn, numpy.fft.fft2, numpy.fft.ifft2, numpy.fft.rfft2 and numpy.fft.irfft2 functions now use the whole input array along the axis i if s[i] == -1, in line with the array API standard.

(gh-25495)

Guard PyArrayScalar_VAL and PyUnicodeScalarObject for the limited API

PyUnicodeScalarObject holds a PyUnicodeObject, which is not available when using Py_LIMITED_API. Add guards to hide it and consequently also make the PyArrayScalar_VAL macro hidden.

(gh-25531)

Changes

  • np.gradient() now returns a tuple rather than a list making the return value immutable.

    (gh-23861)

  • Being fully context and thread-safe, np.errstate can only be entered once now.

  • np.setbufsize is now tied to np.errstate(): leaving an np.errstate context will also reset the bufsize.

    (gh-23936)

  • A new public np.lib.array_utils submodule has been introduced and it currently contains three functions: byte_bounds (moved from np.lib.utils), normalize_axis_tuple and normalize_axis_index.

    (gh-24540)

  • Introduce numpy.bool as the new canonical name for NumPy's boolean dtype, and make numpy.bool\_ an alias to it. Note that until NumPy 1.24, np.bool was an alias to Python's builtin bool. The new name helps with array API standard compatibility and is a more intuitive name.

    (gh-25080)

  • The dtype.flags value was previously stored as a signed integer. This means that the aligned dtype struct flag lead to negative flags being set (-128 rather than 128). This flag is now stored unsigned (positive). Code which checks flags manually may need to adapt. This may include code compiled with Cython 0.29.x.

    (gh-25816)

Representation of NumPy scalars changed

As per NEP 51, the scalar representation has been updated to include the type information to avoid confusion with Python scalars.

Scalars are now printed as np.float64(3.0) rather than just 3.0. This may disrupt workflows that store representations of numbers (e.g., to files) making it harder to read them. They should be stored as explicit strings, for example by using str() or f"{scalar!s}". For the time being, affected users can use np.set_printoptions(legacy="1.25") to get the old behavior (with possibly a few exceptions). Documentation of downstream projects may require larger updates, if code snippets are tested. We are working on tooling for doctest-plus to facilitate updates.

(gh-22449)

Truthiness of NumPy strings changed

NumPy strings previously were inconsistent about how they defined if the string is True or False and the definition did not match the one used by Python. Strings are now considered True when they are non-empty and False when they are empty. This changes the following distinct cases:

  • Casts from string to boolean were previously roughly equivalent to string_array.astype(np.int64).astype(bool), meaning that only valid integers could be cast. Now a string of "0" will be considered True since it is not empty. If you need the old behavior, you may use the above step (casting to integer first) or string_array == "0" (if the input is only ever 0 or 1). To get the new result on old NumPy versions use string_array != "".
  • np.nonzero(string_array) previously ignored whitespace so that a string only containing whitespace was considered False. Whitespace is now considered True.

This change does not affect np.loadtxt, np.fromstring, or np.genfromtxt. The first two still use the integer definition, while genfromtxt continues to match for "true" (ignoring case). However, if np.bool_ is used as a converter the result will change.

The change does affect np.fromregex as it uses direct assignments.

(gh-23871)

A mean keyword was added to var and std function

Often when the standard deviation is needed the mean is also needed. The same holds for the variance and the mean. Until now the mean is then calculated twice, the change introduced here for the numpy.var and numpy.std functions allows for passing in a precalculated mean as an keyword argument. See the docstrings for details and an example illustrating the speed-up.

(gh-24126)

Remove datetime64 deprecation warning when constructing with timezone

The numpy.datetime64 method now issues a UserWarning rather than a DeprecationWarning whenever a timezone is included in the datetime string that is provided.

(gh-24193)

Default integer dtype is now 64-bit on 64-bit Windows

The default NumPy integer is now 64-bit on all 64-bit systems as the historic 32-bit default on Windows was a common source of issues. Most users should not notice this. The main issues may occur with code interfacing with libraries written in a compiled language like C. For more information see migration_windows_int64.

(gh-24224)

Renamed numpy.core to numpy._core

Accessing numpy.core now emits a DeprecationWarning. In practice we have found that most downstream usage of numpy.core was to access functionality that is available in the main numpy namespace. If for some reason you are using functionality in numpy.core that is not available in the main numpy namespace, this means you are likely using private NumPy internals. You can still access these internals via numpy._core without a deprecation warning but we do not provide any backward compatibility guarantees for NumPy internals. Please open an issue if you think a mistake was made and something needs to be made public.

(gh-24634)

The "relaxed strides" debug build option, which was previously enabled through the NPY_RELAXED_STRIDES_DEBUG environment variable or the -Drelaxed-strides-debug config-settings flag has been removed.

(gh-24717)

Redefinition of np.intp/np.uintp (almost never a change)

Due to the actual use of these types almost always matching the use of size_t/Py_ssize_t this is now the definition in C. Previously, it matched intptr_t and uintptr_t which would often have been subtly incorrect. This has no effect on the vast majority of machines since the size of these types only differ on extremely niche platforms.

However, it means that:

  • Pointers may not necessarily fit into an intp typed array anymore. The p and P character codes can still be used, however.
  • Creating intptr_t or uintptr_t typed arrays in C remains possible in a cross-platform way via PyArray_DescrFromType('p').
  • The new character codes nN were introduced.
  • It is now correct to use the Python C-API functions when parsing to npy_intp typed arguments.

(gh-24888)

numpy.fft.helper made private

numpy.fft.helper was renamed to numpy.fft._helper to indicate that it is a private submodule. All public functions exported by it should be accessed from numpy.fft.

(gh-24945)

numpy.linalg.linalg made private

numpy.linalg.linalg was renamed to numpy.linalg._linalg to indicate that it is a private submodule. All public functions exported by it should be accessed from numpy.linalg.

(gh-24946)

Out-of-bound axis not the same as axis=None

In some cases axis=32 or for concatenate any large value was the same as axis=None. Except for concatenate this was deprecate. Any out of bound axis value will now error, make sure to use axis=None.

(gh-25149)

New copy keyword meaning for array and asarray constructors

Now numpy.array and numpy.asarray support three values for copy parameter:

  • None - A copy will only be made if it is necessary.
  • True - Always make a copy.
  • False - Never make a copy. If a copy is required a ValueError is raised.

The meaning of False changed as it now raises an exception if a copy is needed.

(gh-25168)

The __array__ special method now takes a copy keyword argument.

NumPy will pass copy to the __array__ special method in situations where it would be set to a non-default value (e.g. in a call to np.asarray(some_object, copy=False)). Currently, if an unexpected keyword argument error is raised after this, NumPy will print a warning and re-try without the copy keyword argument. Implementations of objects implementing the __array__ protocol should accept a copy keyword argument with the same meaning as when passed to numpy.array or numpy.asarray.

(gh-25168)

Cleanup of initialization of numpy.dtype with strings with commas

The interpretation of strings with commas is changed slightly, in that a trailing comma will now always create a structured dtype. E.g., where previously np.dtype("i") and np.dtype("i,") were treated as identical, now np.dtype("i,") will create a structured dtype, with a single field. This is analogous to np.dtype("i,i") creating a structured dtype with two fields, and makes the behaviour consistent with that expected of tuples.

At the same time, the use of single number surrounded by parenthesis to indicate a sub-array shape, like in np.dtype("(2)i,"), is deprecated. Instead; one should use np.dtype("(2,)i") or np.dtype("2i"). Eventually, using a number in parentheses will raise an exception, like is the case for initializations without a comma, like np.dtype("(2)i").

(gh-25434)

Change in how complex sign is calculated

Following the array API standard, the complex sign is now calculated as z / |z| (instead of the rather less logical case where the sign of the real part was taken, unless the real part was zero, in which case the sign of the imaginary part was returned). Like for real numbers, zero is returned if z==0.

(gh-25441)

Return types of functions that returned a list of arrays

Functions that returned a list of ndarrays have been changed to return a tuple of ndarrays instead. Returning tuples consistently whenever a sequence of arrays is returned makes it easier for JIT compilers like Numba, as well as for static type checkers in some cases, to support these functions. Changed functions are: numpy.atleast_1d, numpy.atleast_2d, numpy.atleast_3d, numpy.broadcast_arrays, numpy.meshgrid, numpy.ogrid, numpy.histogramdd.

np.unique return_inverse shape for multi-dimensional inputs

When multi-dimensional inputs are passed to np.unique with return_inverse=True, the unique_inverse output is now shaped such that the input can be reconstructed directly using np.take(unique, unique_inverse) when axis=None, and np.take_along_axis(unique, unique_inverse, axis=axis) otherwise.

(gh-25553, gh-25570)

any and all return booleans for object arrays

The any and all functions and methods now return booleans also for object arrays. Previously, they did a reduction which behaved like the Python or and and operators which evaluates to one of the arguments. You can use np.logical_or.reduce and np.logical_and.reduce to achieve the previous behavior.

(gh-25712)

np.can_cast cannot be called on Python int, float, or complex

np.can_cast cannot be called with Python int, float, or complex instances anymore. This is because NEP 50 means that the result of can_cast must not depend on the value passed in. Unfortunately, for Python scalars whether a cast should be considered "same_kind" or "safe" may depend on the context and value so that this is currently not implemented. In some cases, this means you may have to add a specific path for: if type(obj) in (int, float, complex): ....

(gh-26393)

Checksums

MD5
fcda027f9735771088e607161c913094  numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl
1c381a5af3e6b945c6937ab3c6e2de09  numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
6258de3c0599f8e3674e11898f2dd71c  numpy-2.0.0-cp310-cp310-macosx_14_0_arm64.whl
aa4d28b404566dc9f5c34a31c6cd7b23  numpy-2.0.0-cp310-cp310-macosx_14_0_x86_64.whl
6b83ba81bdc750ef9924e3dc6f7c93be  numpy-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
3d129fe67d99e0aad451742abb963ffa  numpy-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
24a060577965bd2a573ed87cbd207b4c  numpy-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl
b00832f558669aacf855c4f5e9cf31d1  numpy-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl
cfe7420d294c583b90cfe07b730136dc  numpy-2.0.0-cp310-cp310-win32.whl
cff9da6b9fe5ad3b05dd3526dff00ac2  numpy-2.0.0-cp310-cp310-win_amd64.whl
f390e03564df5ea37a97ac10cf0cbb00  numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl
a006b081decba286a321de67a1abe246  numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
6aea3e8589e33349b8170524af5a2e44  numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl
eea8146c5dc2a306333bfea1f01f7a37  numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl
e96c2af477c970c8ff50ecb5d1cf754f  numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
d065256e02a1d410d0db2577bb8fd9a4  numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
98c570b79459342c219590c5af38d527  numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl
dc435751cb926f53a9fc457f35146527  numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
aaa4b435d29022ceacb4e3dcbd43d11a  numpy-2.0.0-cp311-cp311-win32.whl
9ff8be4f581d86b2f181fe905491b19b  numpy-2.0.0-cp311-cp311-win_amd64.whl
1c9519c5e6a0c5a99715e51ac3b7c932  numpy-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl
b0f26e8728523d716f5165953b35244f  numpy-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
029703d0ff0e96c603c91f611926ef17  numpy-2.0.0-cp312-cp312-macosx_14_0_arm64.whl
2231ecbb380c70ddf462e9671d06612c  numpy-2.0.0-cp312-cp312-macosx_14_0_x86_64.whl
4153b50c1a3647ca58f1084fcaf3e4c6  numpy-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
82cba3915234f8018fd754ffc45e95b0  numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
249047dd7255a5fcf5c45614ba211e10  numpy-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl
f7581ebfe0c9d4ae4f3b6ea09c19eea7  numpy-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
8a0dbcd919d1d959f1846a00ebb05162  numpy-2.0.0-cp312-cp312-win32.whl
22aabdfd85ed34f02a7cdacff399c5d9  numpy-2.0.0-cp312-cp312-win_amd64.whl
1fce84122c393e05b69e2ec53ecd1137  numpy-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl
81e4c1152274d85813bf14814ad4d359  numpy-2.0.0-cp39-cp39-macosx_11_0_arm64.whl
5eab1a2b427b590d2bc9d8ecd330fc21  numpy-2.0.0-cp39-cp39-macosx_14_0_arm64.whl
ab967929693baf2d2bfb00c53413ad2b  numpy-2.0.0-cp39-cp39-macosx_14_0_x86_64.whl
85d2971cd78800663766f46ba312d356  numpy-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
7e831fcf9cff5317429786a3bd123671  numpy-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
03a6426ca86ad53567e3ef61bc766013  numpy-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl
b30af2d2b99468538f45e6769f9fee2b  numpy-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl
cc9a8db8d131fb5a387e2c1342ab0065  numpy-2.0.0-cp39-cp39-win32.whl
9843951308fa31c5e36c4c6a0b090308  numpy-2.0.0-cp39-cp39-win_amd64.whl
5021eb5e225bff3e05a38a565daf8852  numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
99186fe49ac7931d3e92e8993c2faa92  numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl
c39f0ab6e07d42708550899951b852b8  numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
cbf151633948e90c93dd988777750961  numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl
a180aaba9982c6e15da6db62dab5eb4e  numpy-2.0.0.tar.gz
SHA256
04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f  numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl
2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2  numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
0a43f0974d501842866cc83471bdb0116ba0dffdbaac33ec05e6afed5b615238  numpy-2.0.0-cp310-cp310-macosx_14_0_arm64.whl
8d83bb187fb647643bd56e1ae43f273c7f4dbcdf94550d7938cfc32566756514  numpy-2.0.0-cp310-cp310-macosx_14_0_x86_64.whl
79e843d186c8fb1b102bef3e2bc35ef81160ffef3194646a7fdd6a73c6b97196  numpy-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
6d7696c615765091cc5093f76fd1fa069870304beaccfd58b5dcc69e55ef49c1  numpy-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b4c76e3d4c56f145d41b7b6751255feefae92edbc9a61e1758a98204200f30fc  numpy-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl
acd3a644e4807e73b4e1867b769fbf1ce8c5d80e7caaef0d90dcdc640dfc9787  numpy-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl
cee6cc0584f71adefe2c908856ccc98702baf95ff80092e4ca46061538a2ba98  numpy-2.0.0-cp310-cp310-win32.whl
ed08d2703b5972ec736451b818c2eb9da80d66c3e84aed1deeb0c345fefe461b  numpy-2.0.0-cp310-cp310-win_amd64.whl
ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5  numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl
e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289  numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609  numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl
b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871  numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl
5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4  numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581  numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995  numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl
0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f  numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f  numpy-2.0.0-cp311-cp311-win32.whl
fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c  numpy-2.0.0-cp311-cp311-win_amd64.whl
354f373279768fa5a584bac997de6a6c9bc535c482592d7a813bb0c09be6c76f  numpy-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl
4d2f62e55a4cd9c58c1d9a1c9edaedcd857a73cb6fda875bf79093f9d9086f85  numpy-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
1e72728e7501a450288fc8e1f9ebc73d90cfd4671ebbd631f3e7857c39bd16f2  numpy-2.0.0-cp312-cp312-macosx_14_0_arm64.whl
84554fc53daa8f6abf8e8a66e076aff6ece62de68523d9f665f32d2fc50fd66e  numpy-2.0.0-cp312-cp312-macosx_14_0_x86_64.whl
c73aafd1afca80afecb22718f8700b40ac7cab927b8abab3c3e337d70e10e5a2  numpy-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
49d9f7d256fbc804391a7f72d4a617302b1afac1112fac19b6c6cec63fe7fe8a  numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
0ec84b9ba0654f3b962802edc91424331f423dcf5d5f926676e0150789cb3d95  numpy-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl
feff59f27338135776f6d4e2ec7aeeac5d5f7a08a83e80869121ef8164b74af9  numpy-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
c5a59996dc61835133b56a32ebe4ef3740ea5bc19b3983ac60cc32be5a665d54  numpy-2.0.0-cp312-cp312-win32.whl
a356364941fb0593bb899a1076b92dfa2029f6f5b8ba88a14fd0984aaf76d0df  numpy-2.0.0-cp312-cp312-win_amd64.whl
e61155fae27570692ad1d327e81c6cf27d535a5d7ef97648a17d922224b216de  numpy-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl
4554eb96f0fd263041baf16cf0881b3f5dafae7a59b1049acb9540c4d57bc8cb  numpy-2.0.0-cp39-cp39-macosx_11_0_arm64.whl
903703372d46bce88b6920a0cd86c3ad82dae2dbef157b5fc01b70ea1cfc430f  numpy-2.0.0-cp39-cp39-macosx_14_0_arm64.whl
3e8e01233d57639b2e30966c63d36fcea099d17c53bf424d77f088b0f4babd86  numpy-2.0.0-cp39-cp39-macosx_14_0_x86_64.whl
1cde1753efe513705a0c6d28f5884e22bdc30438bf0085c5c486cdaff40cd67a  numpy-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
821eedb7165ead9eebdb569986968b541f9908979c2da8a4967ecac4439bae3d  numpy-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
9a1712c015831da583b21c5bfe15e8684137097969c6d22e8316ba66b5baabe4  numpy-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl
9c27f0946a3536403efb0e1c28def1ae6730a72cd0d5878db38824855e3afc44  numpy-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl
63b92c512d9dbcc37f9d81b123dec99fdb318ba38c8059afc78086fe73820275  numpy-2.0.0-cp39-cp39-win32.whl
3f6bed7f840d44c08ebdb73b1825282b801799e325bcbdfa6bc5c370e5aecc65  numpy-2.0.0-cp39-cp39-win_amd64.whl
9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6  numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a  numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl
38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad  numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9  numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl
cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864  numpy-2.0.0.tar.gz

Configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about this update again.


  • If you want to rebase/retry this MR, click this checkbox.

This MR has been generated by Renovate Bot.

Edited by Tine Wittler

Merge request reports