Skip to content

Releases: numpy/numpy

v2.4.5 (May 15, 2026)

15 May 20:46
Immutable release. Only release title and notes can be modified.
v2.4.5
26e8185

Choose a tag to compare

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.shape assignability 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: _NestedSequence type parameter default to work around...
  • #31426: TYP: Fix DTypeLike runtime type-checker support (#31425)

2.4.4 (Mar 29, 2026)

29 Mar 13:38
Immutable release. Only release title and notes can be modified.
v2.4.4
be93fe2

Choose a tag to compare

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 sprintf with snprintf...

2.4.3 (Mar 9, 2026)

09 Mar 17:09
Immutable release. Only release title and notes can be modified.
v2.4.3
8bcb2e7

Choose a tag to compare

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)

01 Feb 16:19
Immutable release. Only release title and notes can be modified.
v2.4.2
c81c49f

Choose a tag to compare

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)

10 Jan 18:01
Immutable release. Only release title and notes can be modified.
v2.4.1
d24bb7f

Choose a tag to compare

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: fix default parameter docstring...
  • #30504: REV: Revert part of #30164 (#30500)
  • #30506: TYP: numpy.select: allow passing array-like default...
  • #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)

20 Dec 18:20
Immutable release. Only release title and notes can be modified.
v2.4.0
c5ab79c

Choose a tag to compare

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 casting kwarg 'same_value' for casting by value.
  • New PyUFunc_AddLoopsFromSpec function that can be used to add user sort
    loops using the ArrayMethod API.
  • 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_view if applicable,
  • np.lib.stride_tricks.as_strided for the general case,
  • or the np.ndarray constructor (buffer is 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
    Use numpy.linalg instead.
  • numpy.fft.helper
    Use numpy.fft instead.

(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.percentile
  • numpy.nanpercentile
  • numpy.quantile
  • numpy.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.data instead)
  • _ctypes.get_shape() (use _ctypes.shape instead)
  • _ctypes.get_strides() (use _ctypes.strides instead)
  • _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). Use numpy.trapezoid or
    scipy.integrate functions instead.
  • disp function --- deprecated from 2.0 release and no longer functional. Use
    your own printing function instead.
  • bias and ddof arguments in numpy.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 style parameter has been removed from numpy.array2string.
    This argument had no effect since Numpy 1.14.0. Any arguments following
    it, such as formatter have 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 python sum builtin 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 deleting numpy from sys.modules and re-importing
    it will now fail with an ImportError. This has always been unsafe, with
    unexpected side-effects, though did not previously raise an error.

    (gh-29030)

  • numpy.round now always returns a copy. Previously, it returned a view
    for integer inputs for decimals >= 0 and a copy in all other cases.
    This change brings round in line with ceil, floor and trunc.

    (gh-29137)

  • Type-checkers will no longer accept calls to numpy.arange with
    start as a keyword argument. This was done for compatibility with
    the Array API standard. At runtime it is still possible to use
    numpy.arange with start as a keyword argument.

    (gh-30147)

  • The Macro NPY_ALIGNMENT_REQUIRED has been removed The macro was defined in
    the npy_cpu.h file, 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 -Wundef flag 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 as NPY_QUICKSORT)
  • NPY_SORT_STABLE -- the sort must be stable (same value as NPY_MERGESORT)
  • NPY_SORT_DESCENDING -- the sort must be descending

The semantic change is that NPY_HEAPSORT is mapped to `NPY_QUICK...

Read more

2.4.0rc1 (Dec 3, 2025)

03 Dec 16:00
Immutable release. Only release title and notes can be modified.
v2.4.0rc1
2daac82

Choose a tag to compare

Pre-release

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 casting kwarg 'same_value' for casting by value.
  • New PyUFunc_AddLoopsFromSpec function that can be used to add user sort
    loops using the ArrayMethod API.
  • 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_view if applicable,
  • np.lib.stride_tricks.as_strided for the general case,
  • or the np.ndarray constructor (buffer is 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
    Use numpy.linalg instead.
  • numpy.fft.helper
    Use numpy.fft instead.

(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.percentile
  • numpy.nanpercentile
  • numpy.quantile
  • numpy.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.data instead)
  • _ctypes.get_shape() (use _ctypes.shape instead)
  • _ctypes.get_strides() (use _ctypes.strides instead)
  • _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). Use numpy.trapezoid or
    scipy.integrate functions instead.
  • disp function --- deprecated from 2.0 release and no longer functional. Use
    your own printing function instead.
  • bias and ddof arguments in numpy.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 style parameter has been removed from numpy.array2string.
    This argument had no effect since Numpy 1.14.0. Any arguments following
    it, such as formatter have 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 python sum builtin 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 deleting numpy from sys.modules and re-importing
    it will now fail with an ImportError. This has always been unsafe, with
    unexpected side-effects, though did not previously raise an error.

    (gh-29030)

  • numpy.round now always returns a copy. Previously, it returned a view
    for integer inputs for decimals >= 0 and a copy in all other cases.
    This change brings round in line with ceil, floor and trunc.

    (gh-29137)

  • Type-checkers will no longer accept calls to numpy.arange with
    start as a keyword argument. This was done for compatibility with
    the Array API standard. At runtime it is still possible to use
    numpy.arange with start as a keyword argument.

    (gh-30147)

  • The Macro NPY_ALIGNMENT_REQUIRED has been removed The macro was defined in
    the npy_cpu.h file, 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 -Wundef flag 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 as NPY_QUICKSORT)
  • NPY_SORT_STABLE -- the sort must be stable (same value as NPY_MERGESORT)
  • NPY_SORT_DESCENDING -- the sort must be descending

The semantic change is that NPY_HEAPSORT is mapped to `NPY_QUICK...

Read more

2.3.5 (Nov 16, 2025)

16 Nov 23:15
Immutable release. Only release title and notes can be modified.
v2.3.5
c3d60fc

Choose a tag to compare

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 order parameter docs of ma.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)

15 Oct 23:15
Immutable release. Only release title and notes can be modified.
v2.3.4
1458b9e

Choose a tag to compare

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 dtype refcount 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 @classmethod arg to cls
  • #29950: MAINT: Simplify string arena growth strategy (#29885)

2.3.3 (Sep 9, 2025)

09 Sep 17:37
v2.3.3
f2a77a7

Choose a tag to compare

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 sorted kwarg to unique
  • #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