Releases: numpy/numpy
2.4.4 (Mar 29, 2026)
NumPy 2.4.4 Release Notes
The NumPy 2.4.4 is a patch release that fixes bugs discovered after the 2.4.3
release. It should finally close issue #30816, the OpenBLAS threading problem
on ARM.
This release supports Python versions 3.11-3.14
Contributors
A total of 8 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Charles Harris
- Daniel Haag +
- Denis Prokopenko +
- Harshith J +
- Koki Watanabe
- Marten van Kerkwijk
- Matti Picus
- Nathan Goldbaum
Pull requests merged
A total of 7 pull requests were merged for this release.
- #30978: MAINT: Prepare 2.4.x for further development
- #31049: BUG: Add test to reproduce problem described in #30816 (#30818)
- #31052: BUG: fix FNV-1a 64-bit selection by using NPY_SIZEOF_UINTP (#31035)
- #31053: BUG: avoid warning on ufunc with where=True and no output
- #31058: DOC: document caveats of ndarray.resize on 3.14 and newer
- #31079: TST: fix POWER VSX feature mapping (#30801)
- #31084: MAINT: numpy.i: Replace deprecated
sprintfwithsnprintf...
2.4.3 (Mar 9, 2026)
NumPy 2.4.3 Release Notes
The NumPy 2.4.3 is a patch release that fixes bugs discovered after the
2.4.2 release. The most user visible fix may be a threading fix for
OpenBLAS on ARM, closing issue #30816.
This release supports Python versions 3.11-3.14
Contributors
A total of 11 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Antareep Sarkar +
- Charles Harris
- Joren Hammudoglu
- Matthieu Darbois
- Matti Picus
- Nathan Goldbaum
- Peter Hawkins
- Pieter Eendebak
- Sebastian Berg
- Warren Weckesser
- stratakis +
Pull requests merged
A total of 14 pull requests were merged for this release.
- #30759: MAINT: Prepare 2.4.x for further development
- #30827: BUG: Fix some leaks found via LeakSanitizer (#30756)
- #30841: MAINT: Synchronize 2.4.x submodules with main
- #30849: TYP:
matlib: missing extended precision imports - #30850: BUG: Fix weak hash function in np.isin(). (#30840)
- #30921: BUG: fix infinite recursion in np.ma.flatten_structured_array...
- #30922: BUG: Fix buffer overrun in CPU baseline validation (#30877)
- #30923: BUG: Fix busdaycalendar's handling of a bool array weekmask....
- #30924: BUG: Fix reference leaks and NULL pointer dereferences (#30908)
- #30925: MAINT: fix two minor issues noticed when touching the C API setup
- #30955: ENH: Test .kind not .char in np.testing.assert_equal (#30879)
- #30957: BUG: fix type issues in uses if PyDataType macros
- #30958: MAINT: Don't use vulture 2.15, it has false positives
- #30973: MAINT: update openblas (#30961)
2.4.2 (Feb 1, 2026)
NumPy 2.4.2 Release Notes
The NumPy 2.4.2 is a patch release that fixes bugs discovered after the
2.4.1 release. Highlights are:
- Fixes memory leaks
- Updates OpenBLAS to fix hangs
This release supports Python versions 3.11-3.14
Contributors
A total of 9 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Charles Harris
- Daniel Tang +
- Joren Hammudoglu
- Kumar Aditya
- Matti Picus
- Nathan Goldbaum
- Ralf Gommers
- Sebastian Berg
- Vikram Kumar +
Pull requests merged
A total of 12 pull requests were merged for this release.
- #30629: MAINT: Prepare 2.4.x for further development
- #30636: TYP:
arange: accept datetime strings - #30657: MAINT: avoid possible race condition by not touching
os.environ... - #30700: BUG: validate contraction axes in tensordot (#30521)
- #30701: DOC: __array_namespace__info__: set_module not __module__ (#30679)
- #30702: BUG: fix free-threaded PyObject layout in replace_scalar_type_names...
- #30703: TST: fix limited API example in tests for latest Cython
- #30709: BUG: Fix some bugs found via valgrind (#30680)
- #30712: MAINT: replace ob_type access with Py_TYPE in PyArray_CheckExact
- #30713: BUG: Fixup the quantile promotion fixup
- #30736: BUG: fix thread safety of
array_getbuffer(#30667) - #30737: backport scipy-openblas version change
2.4.1 (Jan 10, 2026)
NumPy 2.4.1 Release Notes
The NumPy 2.4.1 is a patch release that fixes bugs discoved after the
2.4.0 release. In particular, the typo SeedlessSequence is preserved to
enable wheels using the random Cython API and built against NumPy < 2.4.0
to run without errors.
This release supports Python versions 3.11-3.14
Contributors
A total of 9 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Alexander Shadchin
- Bill Tompkins +
- Charles Harris
- Joren Hammudoglu
- Marten van Kerkwijk
- Nathan Goldbaum
- Raghuveer Devulapalli
- Ralf Gommers
- Sebastian Berg
Pull requests merged
A total of 15 pull requests were merged for this release.
- #30490: MAINT: Prepare 2.4.x for further development
- #30503: DOC:
numpy.select: fixdefaultparameter docstring... - #30504: REV: Revert part of #30164 (#30500)
- #30506: TYP:
numpy.select: allow passing array-likedefault... - #30507: MNT: use if constexpr for compile-time branch selection
- #30513: BUG: Fix leak in flat assignment iterator
- #30516: BUG: fix heap overflow in fixed-width string multiply (#30511)
- #30523: BUG: Ensure summed weights returned by np.average always are...
- #30527: TYP: Fix return type of histogram2d
- #30594: MAINT: avoid passing ints to random functions that take double...
- #30595: BLD: Avoiding conflict with pygit2 for static build
- #30596: MAINT: Fix msvccompiler missing error on FreeBSD
- #30608: BLD: update vendored Meson to 1.9.2
- #30620: ENH: use more fine-grained critical sections in array coercion...
- #30623: BUG: Undo result type change of quantile/percentile but keep...
2.4.0 (Dec 20, 2025)
NumPy 2.4.0 Release Notes
The NumPy 2.4.0 release continues the work to improve free threaded Python
support, user dtypes implementation, and annotations. There are many expired
deprecations and bug fixes as well.
This release supports Python versions 3.11-3.14
Highlights
Apart from annotations and same_value kwarg, the 2.4 highlights are mostly
of interest to downstream developers. They should help in implementing new user
dtypes.
- Many annotation improvements. In particular, runtime signature introspection.
- New
castingkwarg'same_value'for casting by value. - New
PyUFunc_AddLoopsFromSpecfunction that can be used to add user sort
loops using theArrayMethodAPI. - New
__numpy_dtype__protocol.
Deprecations
Setting the strides attribute is deprecated
Setting the strides attribute is now deprecated since mutating
an array is unsafe if an array is shared, especially by multiple
threads. As an alternative, you can create a new view (no copy) via:
np.lib.stride_tricks.strided_window_viewif applicable,np.lib.stride_tricks.as_stridedfor the general case,- or the
np.ndarrayconstructor (bufferis the original array) for a
light-weight version.
(gh-28925)
Positional out argument to np.maximum, np.minimum is deprecated
Passing the output array out positionally to numpy.maximum and
numpy.minimum is deprecated. For example, np.maximum(a, b, c) will emit
a deprecation warning, since c is treated as the output buffer rather than
a third input.
Always pass the output with the keyword form, e.g. np.maximum(a, b, out=c).
This makes intent clear and simplifies type annotations.
(gh-29052)
align= must be passed as boolean to np.dtype()
When creating a new dtype a VisibleDeprecationWarning will be given if
align= is not a boolean. This is mainly to prevent accidentally passing a
subarray align flag where it has no effect, such as np.dtype("f8", 3)
instead of np.dtype(("f8", 3)). We strongly suggest to always pass
align= as a keyword argument.
(gh-29301)
Assertion and warning control utilities are deprecated
np.testing.assert_warns and np.testing.suppress_warnings are
deprecated. Use warnings.catch_warnings, warnings.filterwarnings,
pytest.warns, or pytest.filterwarnings instead.
(gh-29550)
np.fix is pending deprecation
The numpy.fix function will be deprecated in a future release. It is
recommended to use numpy.trunc instead, as it provides the same
functionality of truncating decimal values to their integer parts. Static type
checkers might already report a warning for the use of numpy.fix.
(gh-30168)
in-place modification of ndarray.shape is pending deprecation
Setting the ndarray.shape attribute directly will be deprecated in a future
release. Instead of modifying the shape in place, it is recommended to use the
numpy.reshape function. Static type checkers might already report a
warning for assignments to ndarray.shape.
(gh-30282)
Deprecation of numpy.lib.user_array.container
The numpy.lib.user_array.container class is deprecated and will be removed
in a future version.
(gh-30284)
Expired deprecations
Removed deprecated MachAr runtime discovery mechanism.
(gh-29836)
Raise TypeError on attempt to convert array with ndim > 0 to scalar
Conversion of an array with ndim > 0 to a scalar was deprecated in NumPy
1.25. Now, attempting to do so raises TypeError. Ensure you extract a
single element from your array before performing this operation.
(gh-29841)
Removed numpy.linalg.linalg and numpy.fft.helper
The following were deprecated in NumPy 2.0 and have been moved to private
modules:
numpy.linalg.linalg
Usenumpy.linalginstead.numpy.fft.helper
Usenumpy.fftinstead.
(gh-29909)
Removed interpolation parameter from quantile and percentile functions
The interpolation parameter was deprecated in NumPy 1.22.0 and has been
removed from the following functions:
numpy.percentilenumpy.nanpercentilenumpy.quantilenumpy.nanquantile
Use the method parameter instead.
(gh-29973)
Removed numpy.in1d
numpy.in1d has been deprecated since NumPy 2.0 and is now removed in favor of numpy.isin.
(gh-29978)
Removed numpy.ndindex.ndincr()
The ndindex.ndincr() method has been deprecated since NumPy 1.20 and is now
removed; use next(ndindex) instead.
(gh-29980)
Removed fix_imports parameter from numpy.save
The fix_imports parameter was deprecated in NumPy 2.1.0 and is now removed.
This flag has been ignored since NumPy 1.17 and was only needed to support
loading files in Python 2 that were written in Python 3.
(gh-29984)
Removal of four undocumented ndarray.ctypes methods
Four undocumented methods of the ndarray.ctypes object have been removed:
_ctypes.get_data()(use_ctypes.datainstead)_ctypes.get_shape()(use_ctypes.shapeinstead)_ctypes.get_strides()(use_ctypes.stridesinstead)_ctypes.get_as_parameter()(use_ctypes._as_parameter_instead)
These methods have been deprecated since NumPy 1.21.
(gh-29986)
Removed newshape parameter from numpy.reshape
The newshape parameter was deprecated in NumPy 2.1.0 and has been
removed from numpy.reshape. Pass it positionally or use shape=
on newer NumPy versions.
(gh-29994)
Removal of deprecated functions and arguments
The following long-deprecated APIs have been removed:
numpy.trapz--- deprecated since NumPy 2.0 (2023-08-18). Usenumpy.trapezoidor
scipy.integratefunctions instead.dispfunction --- deprecated from 2.0 release and no longer functional. Use
your own printing function instead.biasandddofarguments innumpy.corrcoef--- these had no effect
since NumPy 1.10.
(gh-29997)
Removed delimitor parameter from numpy.ma.mrecords.fromtextfile()
The delimitor parameter was deprecated in NumPy 1.22.0 and has been
removed from numpy.ma.mrecords.fromtextfile(). Use delimiter instead.
(gh-30021)
numpy.array2string and numpy.sum deprecations finalized
The following long-deprecated APIs have been removed or converted to errors:
- The
styleparameter has been removed fromnumpy.array2string.
This argument had no effect since Numpy 1.14.0. Any arguments following
it, such asformatterhave now been made keyword-only. - Calling
np.sum(generator)directly on a generator object now raises a
TypeError. This behavior was deprecated in NumPy 1.15.0. Use
np.sum(np.fromiter(generator))or the pythonsumbuiltin instead.
(gh-30068)
Compatibility notes
-
NumPy's C extension modules have begun to use multi-phase initialisation, as
defined by PEP 489. As part of this, a new explicit check has been added that
each such module is only imported once per Python process. This comes with
the side-effect that deletingnumpyfromsys.modulesand re-importing
it will now fail with anImportError. This has always been unsafe, with
unexpected side-effects, though did not previously raise an error.(gh-29030)
-
numpy.roundnow always returns a copy. Previously, it returned a view
for integer inputs fordecimals >= 0and a copy in all other cases.
This change bringsroundin line withceil,floorandtrunc.(gh-29137)
-
Type-checkers will no longer accept calls to
numpy.arangewith
startas a keyword argument. This was done for compatibility with
the Array API standard. At runtime it is still possible to use
numpy.arangewithstartas a keyword argument.(gh-30147)
-
The Macro NPY_ALIGNMENT_REQUIRED has been removed The macro was defined in
thenpy_cpu.hfile, so might be regarded as semi public. As it turns out,
with modern compilers and hardware it is almost always the case that
alignment is required, so numpy no longer uses the macro. It is unlikely
anyone uses it, but you might want to compile with the-Wundefflag or
equivalent to be sure.(gh-29094)
C API changes
The NPY_SORTKIND enum has been enhanced with new variables
This is of interest if you are using PyArray_Sort or PyArray_ArgSort.
We have changed the semantics of the old names in the NPY_SORTKIND enum and
added new ones. The changes are backward compatible, and no recompilation is
needed. The new names of interest are:
NPY_SORT_DEFAULT-- default sort (same value asNPY_QUICKSORT)NPY_SORT_STABLE-- the sort must be stable (same value asNPY_MERGESORT)NPY_SORT_DESCENDING-- the sort must be descending
The semantic change is that NPY_HEAPSORT is mapped to `NPY_QUICK...
2.4.0rc1 (Dec 3, 2025)
NumPy 2.4.0 Release Notes
The NumPy 2.4.0 release continues the work to improve free threaded Python
support, user dtypes implementation, and annotations. There are many expired
deprecations and bug fixes as well.
This release supports Python versions 3.11-3.14
Highlights
Apart from annotations and same_value kwarg, the 2.4 highlights are mostly
of interest to downstream developers. They should help in implementing new user
dtypes.
- Many annotation improvements. In particular, runtime signature introspection.
- New
castingkwarg'same_value'for casting by value. - New
PyUFunc_AddLoopsFromSpecfunction that can be used to add user sort
loops using theArrayMethodAPI. - New
__numpy_dtype__protocol.
Deprecations
Setting the strides attribute is deprecated
Setting the strides attribute is now deprecated since mutating
an array is unsafe if an array is shared, especially by multiple
threads. As an alternative, you can create a new view (no copy) via:
np.lib.stride_tricks.strided_window_viewif applicable,np.lib.stride_tricks.as_stridedfor the general case,- or the
np.ndarrayconstructor (bufferis the original array) for a
light-weight version.
(gh-28925)
Positional out argument to np.maximum, np.minimum is deprecated
Passing the output array out positionally to numpy.maximum and
numpy.minimum is deprecated. For example, np.maximum(a, b, c) will emit
a deprecation warning, since c is treated as the output buffer rather than
a third input.
Always pass the output with the keyword form, e.g. np.maximum(a, b, out=c).
This makes intent clear and simplifies type annotations.
(gh-29052)
align= must be passed as boolean to np.dtype()
When creating a new dtype a VisibleDeprecationWarning will be given if
align= is not a boolean. This is mainly to prevent accidentally passing a
subarray align flag where it has no effect, such as np.dtype("f8", 3)
instead of np.dtype(("f8", 3)). We strongly suggest to always pass
align= as a keyword argument.
(gh-29301)
Assertion and warning control utilities are deprecated
np.testing.assert_warns and np.testing.suppress_warnings are
deprecated. Use warnings.catch_warnings, warnings.filterwarnings,
pytest.warns, or pytest.filterwarnings instead.
(gh-29550)
np.fix is pending deprecation
The numpy.fix function will be deprecated in a future release. It is
recommended to use numpy.trunc instead, as it provides the same
functionality of truncating decimal values to their integer parts. Static type
checkers might already report a warning for the use of numpy.fix.
(gh-30168)
in-place modification of ndarray.shape is pending deprecation
Setting the ndarray.shape attribute directly will be deprecated in a future
release. Instead of modifying the shape in place, it is recommended to use the
numpy.reshape function. Static type checkers might already report a
warning for assignments to ndarray.shape.
(gh-30282)
Deprecation of numpy.lib.user_array.container
The numpy.lib.user_array.container class is deprecated and will be removed
in a future version.
(gh-30284)
Expired deprecations
Removed deprecated MachAr runtime discovery mechanism.
(gh-29836)
Raise TypeError on attempt to convert array with ndim > 0 to scalar
Conversion of an array with ndim > 0 to a scalar was deprecated in NumPy
1.25. Now, attempting to do so raises TypeError. Ensure you extract a
single element from your array before performing this operation.
(gh-29841)
Removed numpy.linalg.linalg and numpy.fft.helper
The following were deprecated in NumPy 2.0 and have been moved to private
modules:
numpy.linalg.linalg
Usenumpy.linalginstead.numpy.fft.helper
Usenumpy.fftinstead.
(gh-29909)
Removed interpolation parameter from quantile and percentile functions
The interpolation parameter was deprecated in NumPy 1.22.0 and has been
removed from the following functions:
numpy.percentilenumpy.nanpercentilenumpy.quantilenumpy.nanquantile
Use the method parameter instead.
(gh-29973)
Removed numpy.in1d
numpy.in1d has been deprecated since NumPy 2.0 and is now removed in favor of numpy.isin.
(gh-29978)
Removed numpy.ndindex.ndincr()
The ndindex.ndincr() method has been deprecated since NumPy 1.20 and is now
removed; use next(ndindex) instead.
(gh-29980)
Removed fix_imports parameter from numpy.save
The fix_imports parameter was deprecated in NumPy 2.1.0 and is now removed.
This flag has been ignored since NumPy 1.17 and was only needed to support
loading files in Python 2 that were written in Python 3.
(gh-29984)
Removal of four undocumented ndarray.ctypes methods
Four undocumented methods of the ndarray.ctypes object have been removed:
_ctypes.get_data()(use_ctypes.datainstead)_ctypes.get_shape()(use_ctypes.shapeinstead)_ctypes.get_strides()(use_ctypes.stridesinstead)_ctypes.get_as_parameter()(use_ctypes._as_parameter_instead)
These methods have been deprecated since NumPy 1.21.
(gh-29986)
Removed newshape parameter from numpy.reshape
The newshape parameter was deprecated in NumPy 2.1.0 and has been
removed from numpy.reshape. Pass it positionally or use shape=
on newer NumPy versions.
(gh-29994)
Removal of deprecated functions and arguments
The following long-deprecated APIs have been removed:
numpy.trapz--- deprecated since NumPy 2.0 (2023-08-18). Usenumpy.trapezoidor
scipy.integratefunctions instead.dispfunction --- deprecated from 2.0 release and no longer functional. Use
your own printing function instead.biasandddofarguments innumpy.corrcoef--- these had no effect
since NumPy 1.10.
(gh-29997)
Removed delimitor parameter from numpy.ma.mrecords.fromtextfile()
The delimitor parameter was deprecated in NumPy 1.22.0 and has been
removed from numpy.ma.mrecords.fromtextfile(). Use delimiter instead.
(gh-30021)
numpy.array2string and numpy.sum deprecations finalized
The following long-deprecated APIs have been removed or converted to errors:
- The
styleparameter has been removed fromnumpy.array2string.
This argument had no effect since Numpy 1.14.0. Any arguments following
it, such asformatterhave now been made keyword-only. - Calling
np.sum(generator)directly on a generator object now raises a
TypeError. This behavior was deprecated in NumPy 1.15.0. Use
np.sum(np.fromiter(generator))or the pythonsumbuiltin instead.
(gh-30068)
Compatibility notes
-
NumPy's C extension modules have begun to use multi-phase initialisation, as
defined by PEP 489. As part of this, a new explicit check has been added that
each such module is only imported once per Python process. This comes with
the side-effect that deletingnumpyfromsys.modulesand re-importing
it will now fail with anImportError. This has always been unsafe, with
unexpected side-effects, though did not previously raise an error.(gh-29030)
-
numpy.roundnow always returns a copy. Previously, it returned a view
for integer inputs fordecimals >= 0and a copy in all other cases.
This change bringsroundin line withceil,floorandtrunc.(gh-29137)
-
Type-checkers will no longer accept calls to
numpy.arangewith
startas a keyword argument. This was done for compatibility with
the Array API standard. At runtime it is still possible to use
numpy.arangewithstartas a keyword argument.(gh-30147)
-
The Macro NPY_ALIGNMENT_REQUIRED has been removed The macro was defined in
thenpy_cpu.hfile, so might be regarded as semi public. As it turns out,
with modern compilers and hardware it is almost always the case that
alignment is required, so numpy no longer uses the macro. It is unlikely
anyone uses it, but you might want to compile with the-Wundefflag or
equivalent to be sure.(gh-29094)
C API changes
The NPY_SORTKIND enum has been enhanced with new variables
This is of interest if you are using PyArray_Sort or PyArray_ArgSort.
We have changed the semantics of the old names in the NPY_SORTKIND enum and
added new ones. The changes are backward compatible, and no recompilation is
needed. The new names of interest are:
NPY_SORT_DEFAULT-- default sort (same value asNPY_QUICKSORT)NPY_SORT_STABLE-- the sort must be stable (same value asNPY_MERGESORT)NPY_SORT_DESCENDING-- the sort must be descending
The semantic change is that NPY_HEAPSORT is mapped to `NPY_QUICK...
2.3.5 (Nov 16, 2025)
NumPy 2.3.5 Release Notes
The NumPy 2.3.5 release is a patch release split between a number of maintenance
updates and bug fixes. This release supports Python versions 3.11-3.14.
Contributors
A total of 10 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Aaron Kollasch +
- Charles Harris
- Joren Hammudoglu
- Matti Picus
- Nathan Goldbaum
- Rafael Laboissière +
- Sayed Awad
- Sebastian Berg
- Warren Weckesser
- Yasir Ashfaq +
Pull requests merged
A total of 16 pull requests were merged for this release.
- #29979: MAINT: Prepare 2.3.x for further development
- #30026: SIMD, BLD: Backport FPMATH mode on x86-32 and filter successor...
- #30029: MAINT: Backport write_release.py
- #30041: TYP: Various typing updates
- #30059: BUG: Fix np.strings.slice if stop=None or start and stop >= len...
- #30063: BUG: Fix np.strings.slice if start > stop
- #30076: BUG: avoid negating INT_MIN in PyArray_Round implementation (#30071)
- #30090: BUG: Fix resize when it contains references (#29970)
- #30129: BLD: update scipy-openblas, use -Dpkg_config_path (#30049)
- #30130: BUG: Avoid compilation error of wrapper file generated with SWIG...
- #30157: BLD: use scipy-openblas 0.3.30.7 (#30132)
- #30158: DOC: Remove nonexistent
orderparameter docs ofma.asanyarray... - #30185: BUG: Fix check of PyMem_Calloc return value. (#30176)
- #30217: DOC: fix links for newly rebuilt numpy-tutorials site
- #30218: BUG: Fix build on s390x with clang (#30214)
- #30237: ENH: Make FPE blas check a runtime check for all apple arm systems
v2.3.4 (Oct 15, 2025)
NumPy 2.3.4 Release Notes
The NumPy 2.3.4 release is a patch release split between a number of maintenance
updates and bug fixes. This release supports Python versions 3.11-3.14. This
release is based on Python 3.14.0 final.
Changes
The npymath and npyrandom libraries now have a .lib rather than a
.a file extension on win-arm64, for compatibility for building with MSVC and
setuptools. Please note that using these static libraries is discouraged
and for existing projects using it, it's best to use it with a matching
compiler toolchain, which is clang-cl on Windows on Arm.
(gh-29750)
Contributors
A total of 17 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- !DWesl
- Charles Harris
- Christian Barbia +
- Evgeni Burovski
- Joren Hammudoglu
- Maaz +
- Mateusz Sokół
- Matti Picus
- Nathan Goldbaum
- Ralf Gommers
- Riku Sakamoto +
- Sandeep Gupta +
- Sayed Awad
- Sebastian Berg
- Sergey Fedorov +
- Warren Weckesser
- dependabot[bot]
Pull requests merged
A total of 30 pull requests were merged for this release.
- #29725: MAINT: Prepare 2.3.x for further development
- #29781: MAINT: Pin some upstream dependences
- #29782: BLD: enable x86-simd-sort to build on KNL with -mavx512f
- #29783: BUG: Include python-including headers first (#29281)
- #29784: TYP: fix np.number and np.*integer method declaration
- #29785: TYP: mypy 1.18.1
- #29788: TYP: replace scalar type __init__ with __new__
- #29790: BUG: Fix
dtyperefcount in__array__(#29715) - #29791: TYP: fix method declarations in floating, timedelta64, and datetime64Backport
- #29792: MAINT: delete unused variables in unary logical dispatch
- #29797: BUG: Fix pocketfft umath strides for AIX compatibility (#29768)
- #29798: BUG: np.setbufsize should raise ValueError for negative input
- #29799: BUG: Fix assert in nditer buffer setup
- #29800: BUG: Stable ScalarType ordering
- #29838: TST: Pin pyparsing to avoid matplotlib errors.
- #29839: BUG: linalg: emit a MemoryError on a malloc failure (#29811)
- #29840: BLD: change file extension for libnpymath on win-arm64 from .a...
- #29864: CI: Fix loongarch64 CI (#29856)
- #29865: TYP: Various typing fixes
- #29910: BUG: Fix float16-sort failures on 32-bit x86 MSVC (#29908)
- #29911: TYP: add missing
__slots__(#29901) - #29913: TYP: wrong argument defaults in
testing._private(#29902) - #29920: BUG: avoid segmentation fault in string_expandtabs_length_promoter
- #29921: BUG: Fix INT_MIN % -1 to return 0 for all signed integer types...
- #29922: TYP: minor fixes related to
errstate(#29914) - #29923: TST: use requirements/test_requirements across CI (#29919)
- #29926: BUG: fix negative samples generated by Wald distribution (#29609)
- #29940: MAINT: Bump pypa/cibuildwheel from 3.1.4 to 3.2.1
- #29949: STY: rename
@classmethodarg to cls - #29950: MAINT: Simplify string arena growth strategy (#29885)
2.3.3 (Sep 9, 2025)
NumPy 2.3.3 Release Notes
The NumPy 2.3.3 release is a patch release split between a number of maintenance
updates and bug fixes. This release supports Python versions 3.11-3.14. Note
that the 3.14.0 final is currently expected in Oct, 2025. This release is based
on 3.14.0rc2.
Contributors
A total of 13 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Aleksandr A. Voyt +
- Bernard Roesler +
- Charles Harris
- Hunter Hogan +
- Joren Hammudoglu
- Maanas Arora
- Matti Picus
- Nathan Goldbaum
- Raghuveer Devulapalli
- Sanjay Kumar Sakamuri Kamalakar +
- Tobias Markus +
- Warren Weckesser
- Zebreus +
Pull requests merged
A total of 23 pull requests were merged for this release.
- #29440: MAINT: Prepare 2.3.x for further development.
- #29446: BUG: Fix test_configtool_pkgconfigdir to resolve PKG_CONFIG_DIR...
- #29447: BLD: allow targeting webassembly without emscripten
- #29460: MAINT: Backport write_release.py
- #29473: MAINT: Bump pypa/cibuildwheel from 3.1.0 to 3.1.2
- #29500: BUG: Always return a real dtype from linalg.cond (gh-18304) (#29333)
- #29501: MAINT: Add .file entry to all .s SVML files
- #29556: BUG: Casting from one timedelta64 to another didn't handle NAT.
- #29562: BLD: update vendored Meson to 1.8.3 [wheel build]
- #29563: BUG: Fix metadata not roundtripping when pickling datetime (#29555)
- #29587: TST: update link and version for Intel SDE download
- #29593: TYP: add
sortedkwarg tounique - #29672: MAINT: Update pythoncapi-compat from main.
- #29673: MAINT: Update cibuildwheel.
- #29674: MAINT: Fix typo in wheels.yml
- #29683: BUG, BLD: Correct regex for ppc64 VSX3/VSX4 feature detection
- #29684: TYP: ndarray.fill() takes no keyword arguments
- #29685: BUG: avoid thread-unsafe refcount check in temp elision
- #29687: CI: replace comment-hider action in mypy_primer workflow
- #29689: BLD: Add missing <unordered_map> include
- #29691: BUG: use correct input dtype in flatiter assignment
- #29700: TYP: fix np.bool method declarations
- #29701: BUG: Correct ambiguous logic for s390x CPU feature detection
v2.3.2 (Jul 24, 2025)
NumPy 2.3.2 Release Notes
The NumPy 2.3.2 release is a patch release with a number of bug fixes
and maintenance updates. The highlights are:
- Wheels for Python 3.14.0rc1
- PyPy updated to the latest stable release
- OpenBLAS updated to 0.3.30
This release supports Python versions 3.11-3.14
Contributors
A total of 9 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
- !DWesl
- Charles Harris
- Joren Hammudoglu
- Maanas Arora
- Marco Edward Gorelli
- Matti Picus
- Nathan Goldbaum
- Sebastian Berg
- kostayScr +
Pull requests merged
A total of 16 pull requests were merged for this release.
- #29256: MAINT: Prepare 2.3.x for further development
- #29283: TYP: Work around a mypy issue with bool arrays (#29248)
- #29284: BUG: fix fencepost error in StringDType internals
- #29287: BUG: handle case in mapiter where descriptors might get replaced...
- #29350: BUG: Fix shape error path in array-interface
- #29412: BUG: Allow reading non-npy files in npz and add test
- #29413: TST: Avoid uninitialized values in test (#29341)
- #29414: BUG: Fix reference leakage for output arrays in reduction functions
- #29415: BUG: fix casting issue in center, ljust, rjust, and zfill (#29369)
- #29416: TYP: Fix overloads in
np.char.arrayandnp.char.asarray... - #29417: BUG: Any dtype should call
squareonarr \*\* 2(#29392) - #29424: MAINT: use a stable pypy release in CI
- #29425: MAINT: Support python 314rc1
- #29429: MAINT: Update highway to match main.
- #29430: BLD: use github to build macos-arm64 wheels with OpenBLAS and...
- #29437: BUG: fix datetime/timedelta hash memory leak (#29411)
Checksums
MD5
e35c637ea9fba77eabfdf70e26eaa16d numpy-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl
3dede42d11c843cfacff422f65a80e47 numpy-2.3.2-cp311-cp311-macosx_11_0_arm64.whl
f5c485a43210eb3541b254c8c9d6ac9e numpy-2.3.2-cp311-cp311-macosx_14_0_arm64.whl
658950eb37e19b42920635ee60830a1d numpy-2.3.2-cp311-cp311-macosx_14_0_x86_64.whl
9a864a280798829cc522521bc5d9c7e2 numpy-2.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
085e1ff7746d327a1320672ab86966c3 numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
6acefa06c38bc616352b76174d4f19d2 numpy-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl
4dd3469970dbfba60dad41b9923c5a5a numpy-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl
ad090139b8b872a9157b92c840566c5e numpy-2.3.2-cp311-cp311-win32.whl
09b023f808432e60633e36a13630dc13 numpy-2.3.2-cp311-cp311-win_amd64.whl
c80f2a1c4c829ccb6745a6d0803b7177 numpy-2.3.2-cp311-cp311-win_arm64.whl
307fc28e0c630dbc5a6ff4051ee9ec6c numpy-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl
4af1ffb81bdec235aef1b9bdf7c1566d numpy-2.3.2-cp312-cp312-macosx_11_0_arm64.whl
8003e8df1badaffee163a603bf05656b numpy-2.3.2-cp312-cp312-macosx_14_0_arm64.whl
e703fab1c371fd27389401caa34a5cbd numpy-2.3.2-cp312-cp312-macosx_14_0_x86_64.whl
5fdc228f15ec5de78b89c7aa4c137019 numpy-2.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
f3bc10b89911c09777c4c5d9752f35b0 numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
5d0128aa0f6aa3a5122364a727a72eba numpy-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl
ef392070c44709321d7f87ab15bbd674 numpy-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl
909e05dcd1164cc02d5fccc1cc6c9ca6 numpy-2.3.2-cp312-cp312-win32.whl
3ba0b657682fc54d9433b4d7244c9264 numpy-2.3.2-cp312-cp312-win_amd64.whl
05755e8c591b1ac2fff05a06d76ac414 numpy-2.3.2-cp312-cp312-win_arm64.whl
c1e323fa1986bc99ae96c46126a30f93 numpy-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl
9a89327ef3550581017ea6e2a47c1a8e numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl
3c7236116911c5c19de0091d7ac81f65 numpy-2.3.2-cp313-cp313-macosx_14_0_arm64.whl
1809c7adafae6492741864cf4dda7d1e numpy-2.3.2-cp313-cp313-macosx_14_0_x86_64.whl
ee68f94ec5f9c0c7f9423d7329bc085e numpy-2.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
24c4e95f0a615356787e2920378e5c6f numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
5c53a2c915d177b7c305c0386ba21b43 numpy-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl
c4607ea441320a0078d942ca21ef2411 numpy-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl
09f2fdeb35d952751ba269ca5fa77e7a numpy-2.3.2-cp313-cp313-win32.whl
47a7326544ce192df844b3e9750c7704 numpy-2.3.2-cp313-cp313-win_amd64.whl
9b5adab8ee4eb97ccf90d73d63671db4 numpy-2.3.2-cp313-cp313-win_arm64.whl
7169baf4160b9a75790650cef23a73e1 numpy-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl
0338f2a78981d84d84e5f693ed6112d5 numpy-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl
b0c1c28add9716f7cee433d53fb43067 numpy-2.3.2-cp313-cp313t-macosx_14_0_arm64.whl
d2d8d43c535184095550420169858b90 numpy-2.3.2-cp313-cp313t-macosx_14_0_x86_64.whl
745bb6930958f4d7980cd705621abc25 numpy-2.3.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
96412f8c9687d468e260aacdfb9cca02 numpy-2.3.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
11ce971fe997bf5c0784516db85891ff numpy-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl
e71ba272e9db74bc753ca056e76fdf5b numpy-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl
82feb6822f2cf04a9edf38cf7f7d4806 numpy-2.3.2-cp313-cp313t-win32.whl
c6c8a1a2e94a9fc2dad9d161a6666e54 numpy-2.3.2-cp313-cp313t-win_amd64.whl
29e65f132c4a916214a0e82bca214717 numpy-2.3.2-cp313-cp313t-win_arm64.whl
2b99d343001495b182027843bf2148b2 numpy-2.3.2-cp314-cp314-macosx_10_13_x86_64.whl
40d04ac18cd9db3c380224d3d5607770 numpy-2.3.2-cp314-cp314-macosx_11_0_arm64.whl
871631874c6839719d1c1b3ad81835cd numpy-2.3.2-cp314-cp314-macosx_14_0_arm64.whl
4d4098888f19de85dd18646c2f955cd2 numpy-2.3.2-cp314-cp314-macosx_14_0_x86_64.whl
813e47e3c07cd28bf0458a1e513d6619 numpy-2.3.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
1fe080566baca813e6ac4635011a408a numpy-2.3.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
bd44ab38b53a4b5b6130b6f01ffaf5fa numpy-2.3.2-cp314-cp314-musllinux_1_2_aarch64.whl
f2fda217bec39ede344b42fef2cbd9e5 numpy-2.3.2-cp314-cp314-musllinux_1_2_x86_64.whl
c02218de0d0666769c91513eafaf251f numpy-2.3.2-cp314-cp314-win32.whl
d419eb806a6f5debb366d4bcf0f5bde0 numpy-2.3.2-cp314-cp314-win_amd64.whl
851529ffdf2b0d4b66eb1ac99c24da3e numpy-2.3.2-cp314-cp314-win_arm64.whl
2306e8b73fcd2d46116c6a95034e4d3a numpy-2.3.2-cp314-cp314t-macosx_10_13_x86_64.whl
b4d4ce3339cb9f0b0f2b339db803f39c numpy-2.3.2-cp314-cp314t-macosx_11_0_arm64.whl
6ae336ac461d5d89811c8a236b442842 numpy-2.3.2-cp314-cp314t-macosx_14_0_arm64.whl
351f35dd00bfb35e6cad2447a14c7cdf numpy-2.3.2-cp314-cp314t-macosx_14_0_x86_64.whl
0e0b26b34024f24a5f59809a1778ace0 numpy-2.3.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
bc77a7f5826bb0a38154d31d8444abb7 numpy-2.3.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
cd1e335e2a8437339475db12ee30f26d numpy-2.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl
5c8093e713bd7e5f8512458d53fefeed numpy-2.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl
66125a7e4e311fc2dedfa8c25ee577f2 numpy-2.3.2-cp314-cp314t-win32.whl
97713f41a5d4a08e8ed3d629d07678d3 numpy-2.3.2-cp314-cp314t-win_amd64.whl
848c4c409b643c2b42c431f51b310095 numpy-2.3.2-cp314-cp314t-win_arm64.whl
e240eed2fc098f7a0ae9813abead8a05 numpy-2.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl
7e46ebe46530596019ae6b5db8a7a564 numpy-2.3.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl
82077182e608a0d366eba700902463b5 numpy-2.3.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl
67db17064907cd22a74676b50de1ab6d numpy-2.3.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl
6d59903ecd732d53dd230ca59cdc2c34 numpy-2.3.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
baae8d6875e1de409ffef875896c4b4f numpy-2.3.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
5d92d6c39f2f0b28149ed15437b13cf7 numpy-2.3.2-pp311-pypy311_pp73-win_amd64.whl
f8d3d3b3ecd2b6e98889e88f6bbdc1a3 numpy-2.3.2.tar.gz
SHA256
852ae5bed3478b92f093e30f785c98e0cb62fa0a939ed057c31716e18a7a22b9 numpy-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl
7a0e27186e781a69959d0230dd9909b5e26024f8da10683bd6344baea1885168 numpy-2.3.2-cp311-cp311-macosx_11_0_arm64.whl
f0a1a8476ad77a228e41619af2fa9505cf69df928e9aaa165746584ea17fed2b numpy-2.3.2-cp311-cp311-macosx_14_0_arm64.whl
cbc95b3813920145032412f7e33d12080f11dc776262df1712e1638207dde9e8 numpy-2.3.2-cp311-cp311-macosx_14_0_x86_64.whl
f75018be4980a7324edc5930fe39aa391d5734531b1926968605416ff58c332d numpy-2.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
20b8200721840f5621b7bd03f8dcd78de33ec522fc40dc2641aa09537df010c3 numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
1f91e5c028504660d606340a084db4b216567ded1056ea2b4be4f9d10b67197f numpy-2.3.2-cp311-cp3...