Skip to main content
`Ctrl`+`K`

# SciPy 1.13.0 Release Notes

SciPy 1.13.0 is the culmination of 3 months of hard work. This out-of-band release aims to support NumPy `2.0.0`, and is backwards compatible to NumPy `1.22.4`. The version of OpenBLAS used to build the PyPI wheels has been increased to `0.3.26.dev`.

This release requires Python 3.9+ and NumPy 1.22.4 or greater.

For running on PyPy, PyPy3 6.0+ is required.

## Highlights of this release

- Support for NumPy `2.0.0`.

- Interactive examples have been added to the documentation, allowing users to run the examples locally on embedded Jupyterlite notebooks in their browser.

- Preliminary 1D array support for the COO and DOK sparse formats.

- Several `scipy.stats` functions have gained support for additional `axis`, `nan_policy`, and `keepdims` arguments. `scipy.stats` also has several performance and accuracy improvements.

## New features

### `scipy.integrate` improvements

- The `terminal` attribute of `scipy.integrate.solve_ivp` `events` callables now additionally accepts integer values to specify a number of occurrences required for termination, rather than the previous restriction of only accepting a `bool` value to terminate on the first registered event.

### `scipy.io` improvements

- `scipy.io.wavfile.write` has improved `dtype` input validation.

### `scipy.interpolate` improvements

- The Modified Akima Interpolation has been added to `interpolate.Akima1DInterpolator`, available via the new `method` argument.

- New method `BSpline.insert_knot` inserts a knot into a `BSpline` instance. This routine is similar to the module-level `scipy.interpolate.insert` function, and works with the BSpline objects instead of `tck` tuples.

- `RegularGridInterpolator` gained the functionality to compute derivatives in place. For instance, `RegularGridInterolator((x, y), values, method="cubic")(xi, nu=(1, 1))` evaluates the mixed second derivative, \(\partial^2 / \partial x \partial y\) at `xi`.

- Performance characteristics of tensor-product spline methods of `RegularGridInterpolator` have been changed: evaluations should be significantly faster, while construction might be slower. If you experience issues with construction times, you may need to experiment with optional keyword arguments `solver` and `solver_args`. Previous behavior (fast construction, slow evaluations) can be obtained via “*_legacy” methods: `method="cubic_legacy"` is exactly equivalent to `method="cubic"` in previous releases. See `gh-19633` for details.

### `scipy.signal` improvements

- Many filter design functions now have improved input validation for the sampling frequency (`fs`).

### `scipy.sparse` improvements

- `coo_array` now supports 1D shapes, and has additional 1D support for `min`, `max`, `argmin`, and `argmax`. The DOK format now has preliminary 1D support as well, though only supports simple integer indices at the time of writing.

- Experimental support has been added for `pydata/sparse` array inputs to `scipy.sparse.csgraph`.

- `dok_array` and `dok_matrix` now have proper implementations of `fromkeys`.

- `csr` and `csc` formats now have improved `setdiag` performance.

### `scipy.spatial` improvements

- `voronoi_plot_2d` now draws Voronoi edges to infinity more clearly when the aspect ratio is skewed.

### `scipy.special` improvements

- All Fortran code, namely, `AMOS`, `specfun`, and `cdflib` libraries that the majority of special functions depend on, is ported to Cython/C.

- The function `factorialk` now also supports faster, approximate calculation using `exact=False`.

### `scipy.stats` improvements

- `scipy.stats.rankdata` and `scipy.stats.wilcoxon` have been vectorized, improving their performance and the performance of hypothesis tests that depend on them.

- `stats.mannwhitneyu` should now be faster due to a vectorized statistic calculation, improved caching, improved exploitation of symmetry, and a memory reduction. `PermutationMethod` support was also added.

- `scipy.stats.mood` now has `nan_policy` and `keepdims` support.

- `scipy.stats.brunnermunzel` now has `axis` and `keepdims` support.

- `scipy.stats.friedmanchisquare`, `scipy.stats.shapiro`, `scipy.stats.normaltest`, `scipy.stats.skewtest`, `scipy.stats.kurtosistest`, `scipy.stats.f_oneway`, `scipy.stats.alexandergovern`, `scipy.stats.combine_pvalues`, and `scipy.stats.kstest` have gained `axis`, `nan_policy` and `keepdims` support.

- `scipy.stats.boxcox_normmax` has gained a `ymax` parameter to allow user specification of the maximum value of the transformed data.

- `scipy.stats.vonmises` `pdf` method has been extended to support `kappa=0`. The `fit` method is also more performant due to the use of non-trivial bounds to solve for `kappa`.

- High order `moment` calculations for `scipy.stats.powerlaw` are now more accurate.

- The `fit` methods of `scipy.stats.gamma` (with `method='mm'`) and `scipy.stats.loglaplace` are faster and more reliable.

- `scipy.stats.goodness_of_fit` now supports the use of a custom `statistic` provided by the user.

- `scipy.stats.wilcoxon` now supports `PermutationMethod`, enabling calculation of accurate p-values in the presence of ties and zeros.

- `scipy.stats.monte_carlo_test` now has improved robustness in the face of numerical noise.

- `scipy.stats.wasserstein_distance_nd` was introduced to compute the Wasserstein-1 distance between two N-D discrete distributions.

## Deprecated features

- Complex dtypes in `PchipInterpolator` and `Akima1DInterpolator` have been deprecated and will raise an error in SciPy 1.15.0. If you are trying to use the real components of the passed array, use `np.real` on `y`.

- Non-integer values of `n` together with `exact=True` are deprecated for `scipy.special.factorial`.

## Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

- `scipy.signal.{lsim2,impulse2,step2}` have been removed in favour of `scipy.signal.{lsim,impulse,step}`.

- Window functions can no longer be imported from the `scipy.signal` namespace and instead should be accessed through either `scipy.signal.windows` or `scipy.signal.get_window`.

- `scipy.sparse` no longer supports multi-Ellipsis indexing

- `scipy.signal.{bspline,quadratic,cubic}` have been removed in favour of alternatives in `scipy.interpolate`.

- `scipy.linalg.tri{,u,l}` have been removed in favour of `numpy.tri{,u,l}`.

- Non-integer arrays in `scipy.special.factorial` with `exact=True` now raise an error.

- Functions from NumPy’s main namespace which were exposed in SciPy’s main namespace, such as `numpy.histogram` exposed by `scipy.histogram`, have been removed from SciPy’s main namespace. Please use the functions directly from `numpy`. This was originally performed for SciPy 1.12.0 however was missed from the release notes so is included here for completeness.

## Backwards incompatible changes

## Other changes

- The second argument of `scipy.stats.moment` has been renamed to `order` while maintaining backward compatibility.

## Authors

- Name (commits)

- h-vetinari (50)

- acceptacross (1) +

- Petteri Aimonen (1) +

- Francis Allanah (2) +

- Jonas Kock am Brink (1) +

- anupriyakkumari (12) +

- Aman Atman (2) +

- Aaditya Bansal (1) +

- Christoph Baumgarten (2)

- Sebastian Berg (4)

- Nicolas Bloyet (2) +

- Matt Borland (1)

- Jonas Bosse (1) +

- Jake Bowhay (25)

- Matthew Brett (1)

- Dietrich Brunn (7)

- Evgeni Burovski (65)

- Matthias Bussonnier (4)

- Tim Butters (1) +

- Cale (1) +

- CJ Carey (5)

- Thomas A Caswell (1)

- Sean Cheah (44) +

- Lucas Colley (97)

- com3dian (1)

- Gianluca Detommaso (1) +

- Thomas Duvernay (1)

- DWesl (2)

- f380cedric (1) +

- fancidev (13) +

- Daniel Garcia (1) +

- Lukas Geiger (3)

- Ralf Gommers (147)

- Matt Haberland (81)

- Tessa van der Heiden (2) +

- Shawn Hsu (1) +

- inky (3) +

- Jannes Münchmeyer (2) +

- Aditya Vidyadhar Kamath (2) +

- Agriya Khetarpal (1) +

- Andrew Landau (1) +

- Eric Larson (7)

- Zhen-Qi Liu (1) +

- Christian Lorentzen (2)

- Adam Lugowski (4)

- m-maggi (6) +

- Chethin Manage (1) +

- Ben Mares (1)

- Chris Markiewicz (1) +

- Mateusz Sokół (3)

- Daniel McCloy (1) +

- Melissa Weber Mendonça (6)

- Josue Melka (1)

- Michał Górny (4)

- Juan Montesinos (1) +

- Juan F. Montesinos (1) +

- Takumasa Nakamura (1)

- Andrew Nelson (27)

- Praveer Nidamaluri (1)

- Yagiz Olmez (5) +

- Dimitri Papadopoulos Orfanos (1)

- Drew Parsons (1) +

- Tirth Patel (7)

- Pearu Peterson (1)

- Matti Picus (3)

- Rambaud Pierrick (1) +

- Ilhan Polat (30)

- Quentin Barthélemy (1)

- Tyler Reddy (117)

- Pamphile Roy (10)

- Atsushi Sakai (8)

- Daniel Schmitz (10)

- Dan Schult (17)

- Eli Schwartz (4)

- Stefanie Senger (1) +

- Scott Shambaugh (2)

- Kevin Sheppard (2)

- sidsrinivasan (4) +

- Samuel St-Jean (1)

- Albert Steppi (31)

- Adam J. Stewart (4)

- Kai Striega (3)

- Ruikang Sun (1) +

- Mike Taves (1)

- Nicolas Tessore (3)

- Benedict T Thekkel (1) +

- Will Tirone (4)

- Jacob Vanderplas (2)

- Christian Veenhuis (1)

- Isaac Virshup (2)

- Ben Wallace (1) +

- Xuefeng Xu (3)

- Xiao Yuan (5)

- Irwin Zaid (8)

- Elmar Zander (1) +

- Mathias Zechmeister (1) +

A total of 96 people contributed to this release. People with a “+” by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

## Issues closed for 1.13.0

- #1603: binomial ppf gives bogus results for small binomial probability…

- #2254: linalg.eig test failure (test_singular) (Trac #1735)

- #8398: Precision of CDFLIB too low

- #9950: “++” initialization in kmeans2 fails for univariate data

- #10317: scipy.stats.nbinom.interval returns wrong result for p=1

- #10569: API: `s` argument different in scipy.fft and numpy.fft

- #11359: lfilter error when input b is 0-dim

- #11577: generalized eigenvalues are sometimes wrong (on some hardware)

- #14001: Pycharm scipy SVD returning error code without message

- #14176: Add option for terminating solver after n events

- #14220: Documentation for dctn/idctn s-parameter is confusing

- #14450: Passing a numpy array as sampling frequency to signal.iirfilter…

- #14586: Problem with freeing-up memory of matrix

- #15039: BUG: sparse.dok_matrix.fromkeys method totally nonfunctional

- #15108: BUG: Seg. fault in scipy.sparse.linalg tests in PROPACK

- #16098: BLD:1.8.0: SciPy is not LTO ready

- #16792: BUG: Manually vectorizing scipy.linalg.expm fails in version…

- #16930: BUG: scipy.linalg.blas.dnrm2 may return error result when incx…

- #17004: Test failures for `Test_SVDS_PROPACK.test_small_sigma2` test…

- #17125: BUG: osx-64 scipy 1.9.1 test_bad_geneig numerical error

- #17172: BUG: scipy.linalg.expm, coshm, sinhm and tanhm fail for read-only…

- #17362: Add support for Flexiblas

- #17436: BUG: linalg.cholesky: segmentation fault with large matrix

- #17530: Unnecessary approximation in `scipy.stats.wilcoxon(x, y)`

- #17681: BUG: special: `pbvv_seq` is broken.

- #18086: BUG: `scipy.linalg.expm` generates inconsistent results between…

- #18089: DOC: <Scaling due to window not clear for spectrum and density>

- #18166: ENH: stats.vonmises.pdf: return 1/(2pi) when kappa=0

- #18408: MAINT: status of C++17 in the interregnum of meson without native…

- #18423: ENH: Adding the SDMN Fortran routine to the python Wrapped functions.

- #18678: BUG: scipy.special.stdtrit is not thread-safe for df.size > 500

- #18722: DOC: in optimize.quadratic_assignment 2opt method, partial_match…

- #18767: Too-strict version restrictions on NumPy break distribution builds

- #18773: BUG: Update oldest-supported-numpy metadata

- #18902: DOC: make default bounds in scipy.optimize.linprog more obvious

- #19088: `pull-request-labeler` misbehaving and therefore disabled again

- #19181: TST: improve array API test skip decorators

- #19225: stats.t.fit() with own optimizer (e.g. to use Nelder-Mead) fails…

- #19486: Query: Where is cdflib used in SciPy code?

- #19573: scipy.fft.fht - documentation issue

- #19584: BUG: MATLAB expm vs scipy.linalg.expm: overflow/invalid value…

- #19596: BENCH: spatial.distance.* “non-xdist” benchmarks

- #19605: BUG: wheel runs have a *lot* of test fails at the moment.

- #19642: Speeding up Mann-Whitney U-Test

- #19653: ENH: Voronoi diagram gives unexpected results from scipy.spatial

- #19659: BUG: savemat(…, format=”4”) throws ValueError errorneously…

- #19678: BUG: scipy.stats.theilslopes returns invalid data when input…

- #19683: BUG/TST: cluster: incorrect test for `seed` param of {`kmeans`,…

- #19729: DOC: Add interactive examples with jupyterlite-sphinx

- #19732: DOC: Likelihood function depending on censoring type

- #19733: BUG: `pythran` min version not enforced

- #19737: TST: io: `test_fortranfiles_mixed_record` fails with numpy…

- #19739: BUG: pchip interpolation of complex values is buggy due to sign…

- #19740: CI, MAINT: some easy cleanups for Python version

- #19754: MAINT, TST: test_public_api.py can fail with NumPy main, via…

- #19767: Build warnings from SuperLU fixed upstream

- #19772: DOC: stats: The docstring for `scipy.stats.crystalball` needs…

- #19774: DOC: Detail what “concatenate” means in the context of `spatial.transform.Rotation.concatenate`

- #19799: DOC: array types: update array validation guidance

- #19813: BUG: typo in specfun.f?

- #19819: BUG: In RBFInterpolator, wrong warning message if degree=-1

- #19831: Test failures with OpenBLAS 0.3.26

- #19835: DOC: `fft` missing from list of subpackages

- #19836: DOC: remove incorrect sentence about subpackage imports

- #19846: CI: pre-release Linux job isn’t using NumPy pre-release anymore

- #19848: `_lib._util.MapWrapper` uses multiprocessing with `fork`,…

- #19854: scipy.special.logsumexp for complex input with return_sign=True…

- #19862: DOC: documentation for transpose operator for sparse matrices…

- #19867: New ndimage and RBFInterpolator test failures in pre-release…

- #19896: BUG: `special.nctdtr` broken in main

- #19897: DOC: scipy.stats.unitary_group does not specify dim>1

- #19928: TST: special: array types: test tol failure with `torch` backend

- #19943: BUG: sparse: CSC.setdiag is slower than converting to LIL and…

- #19948: BUG: scipy.sparse.linalg.gmres fails when provided x0 solves…

- #19951: BUG: boolean masking broken for sparse array classes

- #19963: DOC: scipy.optimize with large differences in parameter scales

- #19974: DOC/REL: retroactively add missing expired deprecations to 1.12.0…

- #19991: BUG: Scipy Optimize with Nelder-Mead method has issues when specifying…

- #19993: BUG: F_INT type conflict with f2py translation of INTEGER type…

- #19998: DOC: Boundary conditions in splrep

- #20001: BUG: scipy.stats.loglaplace may return negative moments

- #20009: BUG: ShortTimeFFT fails with complex input

- #20012: MAINT: Use NumPy sliding_window_view instead of as_strided in…

- #20014: TST: signal: TestCorrelateReal failing on Meson 3.12 job

- #20027: BUG: `sparse.random` returns transposed array in 1.12

- #20031: TST: prefer `pytest.warns` over `np.testing.assert_warns`

- #20034: TST: linalg: test_decomp_cossin.py::test_cossin_separate[float64]…

- #20036: MAINT: implement scipy.stats.powerlaw._munp

- #20041: BUG: Using LinearConstraint with optimize.differential_evolution

- #20042: BUG: scipy.stats.percentileofscore has a mistake

- #20043: equality used to compare floating point numbers (test_bootstrap_alternative)

- #20060: BUG: stacking two dok_array produces a NotImplementedError about…

- #20062: MAINT, TST: test failures against NumPy main

- #20071: MAINT: doc build warnings

- #20075: BUG: `eigh_tridiagonal` with `select=”i”` fails for 1x1 matrices

- #20084: BUG: `import scipy._lib._testutils` raises exception in some…

- #20100: ENH: Expose NoConvergence error class in the scipy.optimize namespace

- #20107: MAINT: builds broken against NumPy main

- #20129: BUG: regression: eval_chebyt gives wrong results for complex…

- #20131: DOC: linalg: Unclear description for the output `P` of `qr`.

- #20142: Typo in the doc of the Kstwobign distribution

- #20156: BUG: sparse.dok_matrix throws KeyError for valid pop(key) since…

- #20157: MAINT, TST: test_svds_parameter_tol failures

- #20161: `dev.py test` fails to accept both `–argument` and `–…

- #20170: Test failures due to `asarray(…, copy=False)` semantics change…

- #20180: deprecation warnings for Node.js 16 on GHA wheel build jobs

- #20182: BUG: `csr_row_index` and `csr_column_index` error for mixed…

- #20188: BUG: Raising scipy.spatial.transform.Rotation to power of 0 adds…

- #20214: BUG: minimize(method=”newton-cg”) crashes with UnboundLocalError…

- #20220: new problem on Cirrus with Homebrew Python in macOS arm64 jobs

- #20225: CI/MAINT: `choco` error for invalid credentials

- #20230: CI, DOC, TST: failure related to scipy/stats/_distn_infrastructure.py…

- #20268: MAINT: failing prerelease deps job - “numpy.broadcast size changed”

- #20291: BUG: Macro collision (`complex`) with Windows SDK in amos code

- #20294: BUG: Hang on Windows in scikit-learn with 1.13rc1 and 1.14.dev…

- #20300: BUG: SciPy 1.13.0rc1 not buildable on old macOS due to pocketfft…

- #20302: BUG: scipy.optimize.nnls fails with exception

- #20340: BUG: line_search_wolfe2 fails to converge due to a wrong condition

- #20344: MAINT/DOC: remove outdated note about NumPy imports

## Pull requests for 1.13.0

- #8404: ENH:special:Tighten cdflib precision to 1e-15

- #14771: ENH: integrate.solve_ivp: allow event `terminal` attribute…

- #16660: DOC: update pydata-sphinx theme

- #17265: Doc: fix linalg.lstsq documentation on residues

- #17525: TST: linalg: temporarily silence failure in test_solve_generalized_discrete_are

- #18530: ENH: sparse: Generalize coo_array to support 1d shapes

- #18541: MAINT: sparse: Stop supporting multi-Ellipsis indexing

- #18828: ENH: improve dtype check in wavfile.write

- #19444: ENH: Add faster inverse-Wishart rvs and logpdf

- #19488: DOC: Improving “Spectral Analysis” section in User Guide

- #19541: BUG: fix cosine distance result type

- #19545: ENH: integrate._tanhsinh: support vector-valued functions

- #19555: DOC: Small documentation and docstring corrections for `ShortTimeFFT`

- #19560: ENH:MAINT:special:Cythonize cdflib

- #19587: ENH:MAINT:special:Rewrite amos F77 code

- #19631: ENH: add parameter ymax in stats.boxcox_normmax

- #19633: ENH: use NdBSpline in RegularGridInterpolator to speed up evaluations

- #19650: ENH: stats.kstests: add axis / nan_policy / keepdims support

- #19662: ENH: stats.normaltest/skewtest/kurtosistest: add axis / nan_policy…

- #19663: DOC: Add example to rv_continuous.fit

- #19664: DOC: Add example for mstats.brunnermunzel

- #19666: DOC: Add Example to lbfgsb docstring

- #19667: ENH: integrate._nsum: function for finite and infinite summation

- #19669: REL: set version to 1.13.0.dev0

- #19672: DEP: signal: remove scipy.signal.{bspline,quadratic,cubic}

- #19674: DEP: linalg: remove tri{,u,l}

- #19675: DEP: signal: remove scipy.signal.{lsim2,impulse2,step2}

- #19676: DEP: signal: remove ability to import window functions from signal…

- #19679: MAINT: stats.theilslopes: consistent promotion of `x` and `y`

- #19680: ENH: stats.shapiro: add axis / nan_policy / keepdims support

- #19681: MAINT: Add binom to new C++ special lib along with its cephes…

- #19682: TST: consolidate array API test skip decorators

- #19687: MAINT:linalg: Remove redundant det and lu Fortran files

- #19689: MAINT: stats.moment: rename parameter `moment` to `order`

- #19694: MAINT: Remove `PDistWeightedMetricWrapper` and `CDistWeightedMetricWrapper`

- #19695: MAINT: Prefer `np.fill_diagonal` over `diag_indices`

- #19696: ENH: add `method` arg to `interpolate.Akima1DInterpolator`

- #19698: MAINT: bump project version

- #19701: MAINT: make import of `array_api_compat` nicer

- #19703: DEP: non-integers in `factorial(…, exact=True)`: deprecate…

- #19708: DOC: spatial.distance: add missing optional param markers

- #19710: TST: fix pytest discovery errors with editable installs

- #19711: DOC: clarify ttest_1samp argument

- #19714: BLD: require Cython >=3.0.4, drop 0.29.X support

- #19715: ENH: sparse: Add DOK support for 1d (without indexing)

- #19716: ENH: enable approximation for factorialk

- #19721: DOC: add rationale for 88 char line length

- #19722: DOC: update release version procedure

- #19723: ENH, MAINT: voronoi_plot_2d nicer inf lines

- #19724: MAINT: Windows NumPy 2.x int shims

- #19725: MNT: use int instead of long in cython code

- #19728: MAINT: enhance the configuration for the `pull-request-labeler`…

- #19730: MAINT: bs4 deprecation shim

- #19731: ENH: stats.mood: add nan_policy / keepdims support

- #19738: BLD: require `pythran>=0.14.0`

- #19741: ENH: stats.friedmanchisquare/brunnermunzel: add axis / nan_policy…

- #19742: CI: fix PR labeler config file

- #19743: ENH: sparse: Add min-max 1d support and tests

- #19744: ENH: stats.mannwhitneyu: speed improvement, memory reduction,…

- #19745: TST: fortranfiles fix

- #19746: CI: add labeler based on issue/PR titles

- #19749: ENH: stats.mannwhitneyu: vectorize statistic calculation

- #19750: DEV/BLD: generate `requirements/*` files to simplify build

- #19752: DEP: deprecate complex dtypes in `PchipInterpolator` and `Akima1DInterpolator`

- #19755: MAINT/TST: ignore backend import errors when not in array API…

- #19757: ENH: Add vectorized scalar minimization bracket finder

- #19758: MAINT: correct inaccurate comment

- #19760: MAINT: interpolate: remove dead code

- #19762: ENH: stats.monte_carlo_test: account for inexact calculation…

- #19763: MAINT: integrate._nsum: adjust algorithm for determining number…

- #19768: MAINT: SuperLU upstream fix for compile warnings

- #19770: ENH: stats.wilcoxon: rewrite for speed and clarity; add PermutationMethod…

- #19773: DOC: stats: The docstring for scipy.stats.crystalball needs an…

- #19775: DOC: Docstring and examples for Rotation.concatenate

- #19776: ENH: stats.rankdata: vectorize calculation

- #19777: ENH: add `BSpline.insert_knot` method

- #19778: DOC, MAINT: fix make dist in rel process

- #19780: MAINT: scipy.stats: replace `_normtest_finish`/`_ttest_finish`/etc……

- #19781: CI, MAINT: switch to stable python release

- #19786: BLD: fix “Failed to guess install tag” in meson-log.txt, add…

- #19787: DOC/BLD: macOS Homebrew OpenBlas detection advice

- #19788: DOC: stats.trim_mean: correct documentation

- #19790: BENCH: Added benchmarks for individual distance metrics

- #19792: MAINT: simplify `t.logpdf`

- #19796: API: Enable `pydata/sparse` input for csgraph module

- #19803: TST: stats: compare geometric zscore to naive version instead…

- #19807: DOC: fft: add note about FHT formulas

- #19808: MAINT: move elementwise algorithms and framework

- #19810: MAINT: set `NPY_NO_DEPRECATED_API` also for Cython code

- #19811: BLD: set default `cpp_std` to `c++17`

- #19818: MAINT: uarray CXX version hex cleanup

- #19820: TST: linalg: Test Cython LAPACK complex ladiv

- #19821: BLD: resolve missing prototype warnings in lsoda/vode

- #19822: BLD: propack: resolve missing return value warnings

- #19823: CI/DEV: add some new auto-labels

- #19824: ENH:Rewrite specfun F77 code in C

- #19825: MAINT: `CODEOWNERS` syntax fix and changes

- #19827: MAINT: spatial: fix build warnings in `ckdtree` code

- #19828: CI/DEV: fix and simplify `label-globs` syntax

- #19829: MAINT: interpolate: fix build warning from `_ppoly.pyx`

- #19837: MAINT: special: fix meson deprecation warning

- #19838: DOC: fft: improve `s` description for real transforms

- #19843: DOC: Add `fft` to list of submodules in tutorial

- #19844: TST: fix more cases of fd leaks from np.load()

- #19849: CI: fix prerelease job to use numpy 2.0, and add a second job…

- #19853: ENH: sparse: foundation for 1D arrays (add test suite, round…

- #19855: BLD: Revamp BLAS/LAPACK G77 ABI wrappers and fix PROPACK segfaults

- #19856: BLD: simplify pythran version requirement in meson

- #19857: BLD: make scipy build warning-free with LTO enabled

- #19860: MAINT: fix BLD label typo

- #19861: BUG:io:Skip arr_to_chars call for single code points

- #19864: Add documentation to explain behavior for transposing csr or…

- #19866: DOC: Change default for bounds in scipy.optimize.linprog

- #19868: MAINT: fix use of `unique(…, return_inverse=True)`

- #19869: MAINT: array types: rename `as_xparray` to `_asarray`

- #19870: MAINT: logsumexp: properly handle complex sign

- #19871: MAINT: make isinstance check in `stats._distn_infrastructure`…

- #19874: rankdata: ensure correct shape for empty inputs

- #19876: MAINT: stats: Add tests to ensure consistency between `wasserstein_distance` and different backends of `wasserstein_distance_nd`

- #19880: DOC: prepare 1.13.0 release notes

- #19882: MAINT: vendor `pocketfft` as git submodule

- #19885: MAINT: fix some small array API support issues

- #19886: TST: stats: fix a few issues with non-reproducible seeding

- #19891: MAINT: stats: fix editable install issue in `qmc` and MPL-related…

- #19893: MAINT: remove unused itertools-import in scipy.interpolate._interpolate

- #19901: MAINT: special: remove use of `numpy.math` from `_cdflib.pyx`

- #19902: BUG:special:cdflib: Correct cdftnc Cython bugs

- #19908: Fix AIX build break.

- #19909: MAINT:linalg:Adjust lwork/liwork changes OpenBLAS 0.3.26

- #19916: MAINT: update pocketfft git submodule location

- #19917: MAINT: replicate FITPACK’s `fpchec` routine in python

- #19924: TST: cluster: fix test_kmeans_and_kmeans2_random_seed

- #19925: MAINT: forward port 1.12.0 relnotes

- #19927: BUG: cluster.kmeans*: array types: accept `int`s for k

- #19929: DOC: updated incorrect sentence about subpackage imports. See…

- #19931: MAINT:special:cdflib:Refine the tolerances further

- #19932: ENH:stats:Use explicit formula for gamma.fit(‘mm’)

- #19933: BUG: Correct handling of -inf in special stdr funcs

- #19934: BUG:special:amos: Fix some mistakes in the AMOS C translation

- #19937: TST: Add RNG seeds for TestInvgauss and TestLaplace

- #19938: MAINT: special: array types: fix warning when not in array API…

- #19939: BUG:special:amos: Fix exit path in `amos_asyi`

- #19942: MAINT: hypothesis: document minimum required version

- #19944: BUG: Correct handling of inf support in binomial

- #19945: BLD: fix issue with escape sequences in `__config__.py`

- #19947: BUG:special:amos: Fix typo in `amos_mlri`

- #19950: DOC: stats.logrank: fix typo that affect survival curves in manual

- #19952: BUG:sparse:Add early exit to gmres when x0 already solves problem

- #19957: defect: sparse: 1d bool mask with wrong shape should raise IndexError

- #19961: DOC: Add version warning banner to documentation

- #19962: ENH: sparse: speedup csr/csc setdiag by converting to coo

- #19965: DOC: scale of parameters in optimize.curve_fit

- #19969: DOC: Fix landing page images for dark theme

- #19971: ENH: Input validation for sampling frequency in signal.filter…

- #19975: ENH: support custom statistic in goodness_of_fit function (gh-19894)

- #19977: DOC: document a common alternative parameterization of invgauss.

- #19978: DOC: fix autosummary for scipy.signal.ShortTimeFFT.t/T under…

- #19980: ENH: stats: add axis/nan_policy support to `f_oneway` and `alexandergovern`

- #19981: TST: correct typo in TestGamma.test_fit_mm function.

- #19995: TST, MAINT: test_immediate_updating fix

- #19997: MAINT: Adjust the codebase to the new `np.array`’s `copy`…

- #20000: MAINT: interpolate: address review comments on NdBSpline/RGI

- #20003: MAINT: sparse: change coo_matrix.indices to coo_matrix.coords

- #20004: MAINT: sparse: change method names _mul_* to _matmul_* all…

- #20005: MAINT: Remove partial from `__all__` (removed from submodule)

- #20006: BENCH: optimize: add timings to global optimizers benchmarks

- #20010: BUG: Add proper error message for `ShortTimeFFT` for onesided…

- #20013: MAINT: signal: use `sliding_window_view` instead of `as_strided`

- #20016: DOC: update release docs to reflect new version banner

- #20017: BUG: loglaplace moment should be non-negative.

- #20018: ENH: refer to the Laplace distribution in log-Laplace documentation.

- #20019: DOC: Add support for interactive examples with jupyterlite-sphinx

- #20020: TST: TestCorrelateReal overflow shim

- #20021: ENH: fix numerical instability around zero in boxcox_llf

- #20023: ENH: use analytic formula for log-laplace MLE when loc is known.

- #20024: ENH:stats: Add multivariate Wasserstein distance as a separate…

- #20032: MAINT: Adjust some comments in special C++ library

- #20033: MAINT: sparse: Un-deprecate getnnz()

- #20037: MAINT: Add special handling for complex infinite input in digamma

- #20039: ENH: use analytical formula in scipy.stats.powerlaw._munp().

- #20044: TST: _ConstraintWrapper returns a violation of the correct shape

- #20045: DOC: add missing np. in tutorial

- #20047: TST: use assert_allclose in test_bootstrap_alternative

- #20052: FIX: Allow any dtype-specifier for ndimage output

- #20053: Add sorting requirement for partial_match and partial_guess

- #20054: BUG: SciPy.interpolate.CubicSpline with periodic data

- #20063: ENH: optimize._differentiate: add option preserve_shape

- #20065: MAINT Fix broken link in `scipy.stats._multivariate.py`

- #20067: TST: shims for NumPy fft changes

- #20068: Changed assert_warns in stats testing to pytest.warns.

- #20069: MAINT/DOC: `special.nrdtrimn/nrdtrisd` docstring fixes

- #20070: MAINT: silence ruff deprecation warning

- #20076: BUG:linalg:Add early exit to eigh_tridiagonal for 1x1 input

- #20078: CI: update github actions and cibuildwheel

- #20080: BUG: sparse: Fix hstack, etc for dok_array

- #20086: MAINT: detect musl differently.

- #20087: MAINT: switch from `numpy.array_api` to `array-api-strict`

- #20092: DOC: Fix a could of places that are parsed as substitution references…

- #20093: DOC: Fix small typos in `signal.rst` and `_short_time_fft.py`

- #20095: DOC: tick tensor product splines off the roadmap

- #20096: TST:linalg:Reduce the size of the cossin test

- #20098: MAINT: minor array API skip improvements

- #20101: MAINT: editorial changes in the doc string of scipy.stats.vonmises.

- #20102: ENH: use non-trivial bounds to solve for kappa of vonmises MLE.

- #20103: MAINT: optimize: expose `NoConvergence`

- #20104: ENH: allow shape parameter kappa to be zero in vonmises distribution.

- #20106: DOC: update docstring of stats.percentileofscore

- #20108: MAINT: shim for descr->f access

- #20111: DOC: clarify accepted values for `dim` in `unitary_group`.

- #20112: BLD: signal: do not install Pythran source alongside the Cython…

- #20119: Fix small issues in docstrings

- #20121: BLD: simplifications in meson.build files

- #20122: MAINT: update Boost.Math to 1.83.0

- #20123: MAINT: stats: fix test failure in `kendalltau_seasonal`

- #20130: BUG: Use Cython implementation of complex hyp2f1 in orthogonal_eval.pxd

- #20135: MAINT: interpolate: define `F_INT` as `int` rather than `npy_int32`

- #20138: TST: optimize: silence the output from calling cobyla with disp=True

- #20141: MAINT/CI: special/array types: test alternative backends in CI

- #20143: DOC: stats: Fix typo in the doc of the Kstwobign distribution

- #20144: MAINT, ENH: Hausdorff simplification

- #20145: TST: special: bump tolerances for new `cdftnc` regression tests

- #20146: MAINT: fix incorrect `noexcept` usage in Cython functions

- #20149: BLD: Ensure Python.h is included before system headers.

- #20153: BLD: interpolate: _interpnd_info does not need installing

- #20154: ENH: sparse: implement fromkeys for _dok_base

- #20163: MAINT: dev.py: allow –args after –

- #20168: BUG: optimize: Fix constraint condition in inner loop of nnls

- #20172: MAINT: (additional) array copy semantics shims

- #20173: TST:special:Add partial tests for nrdtrimn and nrdtrisd

- #20174: DOC: interpolate: `splrep` default boundary condition

- #20175: MAINT: sparse: add missing dict methods to DOK and tests

- #20176: MAINT: vulture/ruff fixups

- #20181: MAINT: Avoid `descr->elsize` and use intp for it.

- #20183: BUG: Fix fancy indexing on compressed sparse arrays with mixed…

- #20184: DOC, DX: Remove version warning banner in latest version

- #20186: MAINT: update action. Closes #20180

- #20191: BUG: Fix shape of single Rotation raised to the 0 or 1 power

- #20193: MAINT: Bump `npy2_compat.h` and add temporary pybind11 workaround

- #20195: ENH: linalg: allow readonly arrays in expm et al

- #20197: TST: linalg: fix complex sort in test_bad_geneig

- #20198: BLD: update minimum Cython version to 3.0.8

- #20203: TST: linalg: undo xfail TestEig::test_singular

- #20204: TST: linalg: add a regression test for a gen eig problem

- #20205: BUG: Fixed `fftshift()` in `ShortTimeFFT`.

- #20206: DOC: clarify role of p in linalg.qr.

- #20209: CI: move regular macosx_arm64 from cirrus to GHA

- #20210: BLD: macosx_arm64 wheel build on GHA instead of cirrus

- #20212: BUG: linalg/sqrtm: more robust check for real->complex Schur…

- #20215: MAINT: bump OpenBLAS “the old way”

- #20217: DOC/MAINT: add examples for nctdtridf, nctdtrinc, nctdtrit

- #20218: TST: mark linalg.sqrtm test as xfail

- #20221: TST: Tweak tols and ignore warnings for more reliable SVD tests

- #20222: DOC add likelihood formula to stats.CensoredData

- #20224: BUG: fix `cluster.vq.kmeans2` with minit=’++’ for 1D data

- #20227: MAINT: remove repeated “the” typos

- #20229: BUG: linalg: fix int overflow in Cholesky (potrf)

- #20231: DOC/DX: array types: update `_asarray` description

- #20232: BLD: Refactor BLAS/LAPACK wrapper infrastructure

- #20233: DOC: stats.rv_continuous.fit: fix backslashes

- #20235: DOC: add reference for ARGUS distribution in scipy.stats

- #20236: DOC: fix small typo in array API docs

- #20237: MAINT: optimize: update `_direct` for typos

- #20238: MAINT: revert ARPACK changes from #20227

- #20241: BLD: remove use of `NPY_VISIBILITY_HIDDEN`

- #20243: MAINT: Specfun translation into C++

- #20245: MAINT: Updated _specfun.pyx

- #20248: MAINT: Removed specfun_lib and updated specfun_wrappers

- #20250: MAINT: interpolate: const qualify cython arrays

- #20251: MAINT:special:Adjust inf values for cdflib

- #20254: MAINT: linalg: readability refactor Riccati equation solver tests

- #20259: BUG: linalg: fix `expm` for large arrays

- #20261: BUG:linalg:Remove the 2x2 branch in expm

- #20263: DOC/REL: add missing expired deprecations to 1.12.0 notes

- #20266: MAINT: stats.wilcoxon: pass `PermutationMethod` options to…

- #20270: BLD: update dependencies for 1.13.0 release and numpy 2.0

- #20279: MAINT: 1.13.0rc1 prep [wheel build]

- #20290: REL: set 1.13.0rc2 unreleased

- #20299: BUG: Optimize: NewtonCG min crashes with xtol=0

- #20313: MAINT: bump pocketfft, MacOS patch

- #20314: BUG: sparse: Restore random coordinate ordering to pre-1.12 results

- #20318: BUG: signal: Fix scalar input issue of signal.lfilter

- #20327: DOC: mention BSpline.insert_knot in the 1.13.0 release notes

- #20333: BUG: sync pocketfft again

- #20337: MAINT: spatial: use cython_lapack in spatial/_qhull.pyx

- #20341: BUG: linalg: raise an error in dnrm2(…, incx<0)

- #20345: BUG: nelder-mead fix degenerate simplex

- #20347: BLD: require pybind11 >=2.12.0 for numpy 2.0 compatibility

- #20349: Do not segfault in svd(a) with VT.size > INT_MAX

- #20350: BUG: optimize: Fix wrong condition to check invalid optimization…

- #20353: DOC: remove outdated NumPy imports note

- #20359: ENH: Converting amos to std::complex

- #20361: ENH: Rest of amos translation

- #20362: MAINT, BUG: bump OpenBLAS

- #20364: BUG: interpolate: Fix wrong warning message if degree=-1 in `interpolate.RBFInterpolator`

- #20374: MAINT: update pybind11 and numpy build-time requirements for…