Releases: numpy/numpy
v2.4.5 (May 15, 2026)
NumPy 2.4.5 Release Notes
NumPy 2.4.5 is a patch release that fixes bugs discovered after the 2.4.4
release, has some typing improvements, and maintains infrastructure.
This release supports Python versions 3.11-3.14
Contributors
A total of 17 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Aleksei Nikiforov
- Anarion Zuo +
- Ankit Ahlawat
- Breno Favaretto +
- Charles Harris
- Igor Krivenko +
- Ijtihed Kilani +
- Joren Hammudoglu
- Maarten Baert +
- Matti Picus
- Nathan Goldbaum
- Praneeth Kodumagulla +
- Ralf Gommers
- RoomWithOutRoof +
- Sebastian Berg
- Warren Weckesser
- div +
Pull requests merged
A total of 28 pull requests were merged for this release.
- #31093: MAINT: Prepare 2.4.x for further development
- #31182: TYP: fix
np.shapeassignability issue for python lists (#31171) - #31197: ENH: Return rank 0 for empty matrices in matrix_rank (#30422)
- #31198: CI/BUG: add native jobs for s390x, fix bug in
pack_inner... - #31199: BUG: f2py map complex_long_double to NPY_CLONGDOUBLE
- #31205: MAINT: f2py: Stop setting re._MAXCACHE to 50.
- #31206: BUG: fix heap buffer overflow in timedelta to string casts
- #31207: MAINT: Rename ppc64le and s390x workflow (#31121)
- #31208: BUG: Fix matvec/vecmat in-place aliasing (out=input produces...
- #31209: TYP:
tile: accept numpy scalars and arrays as second argument... - #31211: DEP: Undo deprecation for np.dtype() signature used by old pickles...
- #31212: REV: Manual revert of float16 svml use (#31178)
- #31222: TYP:
ix_fix for boolean and non-1d input (#31218) - #31329: BUG: incorrect temp elision for new-style (NEP 43) user-defined...
- #31330: TYP: fix sliding_window_view axis parameter typing
- #31335: BUG: Prevent deadlock due to downstream importing NumPy in dlopen...
- #31336: BUG: Fix segfault in nditer.multi_index when __getitem__ raises...
- #31338: TYP: Fix ruff lint error
- #31357: BUG: fix memory leak in np.zeros when fill-zero loop raises (#31320)
- #31358: BUG: np.einsum() fails with a 0-dimensional out argument and...
- #31379: BUG: Fix signed overflow issue in npy_gcd for INT_MIN on s390x...
- #31383: CI: remove Cirrus CI FreeBSD job (#31380)
- #31390: BUILD: newer MKL uses so.3
- #31391: BLD/MAINT: improve support for Intel LLVM compilers
- #31401: BUG: Avoid UB in safe[add,sub,mul] helpers (#31396)
- #31402: BUG: exclude __pycache__ directories from wheels (#31397)
- #31404: TYP:
_NestedSequencetype parameter default to work around... - #31426: TYP: Fix
DTypeLikeruntime type-checker support (#31425)
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