SciPy 1.17.0 Release Notes#

Note

SciPy 1.17.0 is not released yet!

SciPy 1.17.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.17.x branch, and on adding new features on the main branch.

This release requires Python 3.11-3.14 and NumPy 1.26.4 or greater.

Highlights of this release#

  • Many SciPy functions have gained native support for batching of N-dimensional array input and additional support for the array API standard. An overall summary of the latter is now available in a set of tables.

  • In scipy.sparse, coo_array now has full support for indexing across dimensions without needing to convert between sparse formats. ARPACK and PROPACK rewrites from Fortran77 to C now empower the use of external pseudorandom number generators.

  • In scipy.spatial, transform.Rotation and transform.RigidTransform have been extended to support N-D arrays. geometric_slerp now has support for extrapolation.

  • scipy.stats has gained the matrix t and logistic distributions and many performance and accuracy improvements.

  • Initial support for 64-bit integer (ILP64) BLAS and LAPACK libraries has been added, including for MKL, Apple Accelerate and OpenBLAS. Please report any issues with ILP64 you encounter.

New features#

scipy.integrate improvements#

  • The integration routines dopri5, dopri853, LSODA, vode, and zvode have been ported from Fortran77 to C.

  • scipy.integrate.quad now has a fast path for returning 0 when the integration interval is empty.

scipy.cluster improvements#

scipy.interpolate improvements#

scipy.linalg improvements#

  • scipy.linalg.inv routine has been improved:

    • it now attempts to detect the structure of its argument and selects an appropriate low-level matrix inversion routine. A new assume_a keyword allows to bypass the structure detection if the structure is known. For batched inputs, the detection is run for each 2D slice, unless an explicit value for assume_a is provided (in which case, the structure is assumed to be the same for all 2-D slices of the batch);

    • the new lower={True,False} keyword argument has been added to help select the upper or lower triangle of the input matrix for symmetric inputs; refer to the docstring of scipy.linalg.inv for details;

    • the routine emits a LinAlgWarning if it detects an ill-conditioned input;

    • performance for batched inputs has been improved.

  • scipy.linalg.fiedler has gained native support for batched inputs.

  • performance has improved for scipy.linalg.solve with batched inputs for certain matrix structures.

scipy.optimize improvements#

  • optimize.minimize(method="trust-exact") now accepts a solver-specific "subproblem_maxiter" option. This option can be used to assure that the algorithm converges for functions with an ill-conditioned Hessian.

  • Callback functions used by optimize.minimize(method="slsqp") can opt into the new callback interface by accepting a single keyword argument intermediate_result.

scipy.signal improvements#

  • abcd_normalize gained more informative error messages and the documentation was improved.

  • get_window now accepts the suffixes '_periodic' and '_symmetric' to distinguish between periodic and symmetric windows (overriding the fftbin parameter). This benefits the functions coherence, csd, periodogram, welch, spectrogram, stft, istft, resample, resample_poly, firwin, firwin2, firwin_2d, check_COLA and check_NOLA, which utilize get_window but do not expose the fftbin parameter.

  • hilbert2 gained the new keyword axes for specifying the axes along which the two-dimensional analytic signal should be calculated. Furthermore, the documentation of hilbert and hilbert2 was significantly improved.

scipy.sparse improvements#

  • coo_array now supports indexing. This includes slices, arrays, np.newaxis, Ellipsis, in 1D, 2D and the new nD. So COO format now has full support for nD and COO now allows indexing without converting formats.

  • Additional sparse construction functions include expand_dims, swapaxes, permute_dims, and nD support for the kron function.

  • ARPACK Fortran77 library is ported to C. Among many changes, it is now possible to use external random generators including NumPy PRNGs for reproducible runs. Previously this was not the case due to internal seeding behavior of the original ARPACK code.

  • Similarly, PROPACK Fortran77 library is also ported to C with the same PRNG enhancements and other improvements.

  • dok_array now supports an update method which can be used to update the sparse array using a dict, dict.items()-like iterable, or another dok_array matrix. It performs additional validation that keys are valid index tuples.

  • tocsr is approximately three times faster and some unneccesary copy operations have been removed from sparse format interconversions more broadly.

  • Added scipy.sparse.linalg.funm_multiply_krylov, a restarted Krylov method for evaluating y = f(tA) b.

scipy.spatial improvements#

  • The spatial.transform module has gained an array API standard compatible backend.

  • transform.Rotation and transform.RigidTransform have been extended from 0D single values and 1D arrays to N-D arrays, with standard indexing and broadcasting rules. Both now have the following additions:

    • A shape property.

    • A shape argument to their identity() constructors, which should be preferred over the existing num argument. This has also been added as an argument for Rotation.random() (RigidTransform does not currently have a random constructor).

    • An axis argument to their mean() functions.

  • The resulting shapes for transform.Rotation.from_euler / from_davenport have changed to make them consistent with broadcasting rules. Angle inputs to Euler angles must now strictly match the number of provided axes in the last dimension. The resulting Rotation has the shape np.atleast_1d(angles).shape[:-1]. Angle inputs to Davenport angles must also match the number of axes in the last dimension. The resulting Rotation has the shape np.broadcast_shapes(np.atleast_2d(axes).shape[:-2], np.atleast_1d(angles).shape[:-1]).

  • Rotation.from_matrix has gained an assume_valid argument that allows for performance improvements when users can guarantee valid matrix inputs. from_matrix is now also faster in cases where a known orthogonal matrix is used.

  • The scipy.spatial.geometric_slerp function can now extrapolate. When given a value outside the range [0, 1], geometric_slerp() will continue with the same rotation outside this range. For example, if spherically interpolating with start being a point on the equator, and end being a point at the north pole, then a value of t=-1 would give you a point at the south pole.

  • Rotation.as_euler and Rotation.as_davenport methods have gained a suppress_warnings parameter to enable suppression of gimbal lock warnings.

scipy.special improvements#

  • The following functions for statistical applications have significantly improved parameter ranges and reduced error rates: btdtria, btdtrib, chdtriv, chndtr, chndtrix, chndtridf, chndtrinc, fdtr, fdtrc, fdtri, gdtria, gdtrix, pdtrik, stdtr and stdtrit.

  • The incomplete beta functions betainc, betaincc, betaincinv and betainccinv are improved for extreme parameter ranges.

scipy.stats improvements#

Array API Standard Support#

Deprecated features and future changes#

  • The scipy.odr module is deprecated in v1.17.0 and will be completely removed in v1.19.0. Users are suggested to use the odrpack package instead.

  • The default dype behavior of scipy.sparse.diags and scipy.sparse.diags_array will change in v1.19.0.

  • In v1.19.0, scipy.linalg.hankel will no longer ravel multidimensional inputs and instead will treat them as a batch.

  • The precenter argument of scipy.signal.lombscargle is deprecated and will be removed in v1.19.0. Furthermore, some arguments will become keyword only.

Expired deprecations#

Backwards incompatible changes#

  • The resulting shapes for transform.Rotation.from_euler / from_davenport have changed to make them consistent with broadcasting rules. Angle inputs to Euler angles must now strictly match the number of provided axes in the last dimension. The resulting Rotation has the shape np.atleast_1d(angles).shape[:-1]. Angle inputs to Davenport angles must also match the number of axes in the last dimension. The resulting Rotation has the shape np.broadcast_shapes(np.atleast_2d(axes).shape[:-2], np.atleast_1d(angles).shape[:-1]).

Other changes#

  • The version of the Boost Math library leveraged by SciPy has been increased from 1.88.0 to 1.89.0.

  • On POSIX operating systems, SciPy will now use the 'forkserver' multiprocessing context on Python 3.13 and older for workers=<an-int> calls if the user hasn’t configured a default method themselves. This follows the default behavior on Python 3.14.

  • Initial support for 64-bit integer (ILP64) BLAS and LAPACK libraries has been added. To enable it, build SciPy with -Duse-ilp64=true meson option, and make sure to have a LAPACK library which exposes both LP64 and ILP64 symbols. Currently supported LAPACK libraries are MKL, Apple Accelerate and OpenBLAS through the scipy-openblas64 package. Note that:

    • the ILP64 support is optional, and is in addition to the always-available LP64 interface;

    • at runtime, you can select the ILP64 variants via the get_{blas,lapack}_funcs functions: scipy.linalg.lapack.get_lapack_funcs(..., use_ilp64="preferred") selects the ILP64 variant if available and LP64 variant otherwise;

    • cython_blas and cython_lapack modules always contain the LP64 routines for ABI compatibility.

Please report any issues with ILP64 you encounter.

Authors#

  • Name (commits)

  • h-vetinari (3)

  • Joshua Alexander (1) +

  • Amit Aronovitch (1) +

  • Ayush Baranwal (1) +

  • Cristrian Batrin (1) +

  • Marco Berzborn (1) +

  • Ole Bialas (1) +

  • Om Biradar (1) +

  • Florian Bourgey (1)

  • Jake Bowhay (102)

  • Matteo Brivio (1) +

  • Dietrich Brunn (34)

  • Johannes Buchner (2) +

  • Evgeni Burovski (288)

  • Nicholas Carlini (1) +

  • Luca Cerina (1) +

  • Christine P. Chai (35)

  • Saransh Chopra (1)

  • Lucas Colley (117)

  • Björn Ingvar Dahlgren (2) +

  • Sumit Das (1) +

  • Hans Dembinski (1)

  • John M Dusel (1) +

  • DWesl (4)

  • Pieter Eendebak (6)

  • Kian Eliasi (2)

  • Rob Falck (1)

  • Abdullah Fayed (3) +

  • Emmanuel Ferdman (2) +

  • Filipe Laíns (1) +

  • Daniel Fremont (1) +

  • Neil Girdhar (1)

  • Ilan Gold (35)

  • Nathan Goldbaum (3) +

  • Ralf Gommers (121)

  • Nicolas Guidotti (1) +

  • Geoffrey Gunter (1) +

  • Matt Haberland (177)

  • Joren Hammudoglu (56)

  • Jacob Hass (2) +

  • Nick Hodgskin (1) +

  • Stephen Huan (1) +

  • Guido Imperiale (41)

  • Gert-Ludwig Ingold (1)

  • Jaime Rodríguez-Guerra (2) +

  • JBlitzar (1) +

  • Adam Jones (2)

  • Dustin Kenefake (1) +

  • Robert Kern (3)

  • Gleb Khmyznikov (1) +

  • Daniil Kiktenko (1) +

  • Pascal Klein (2) +

  • kleiter (1) +

  • Oliver Kovacs (1) +

  • Koven (1) +

  • Abhishek Kumar (2) +

  • Arthur Lacote (2) +

  • Eric Larson (7)

  • Mouad Leachouri (1) +

  • Tristan Leclercq (1) +

  • Antony Lee (5)

  • Jesse Livezey (8)

  • Philip Loche (1)

  • Yuxi Long (4) +

  • Christian Lorentzen (1)

  • Joshua Markovic (1) +

  • Gabryel Mason-Williams (1) +

  • mcdigman (1) +

  • Rafael Menezes (1) +

  • Stefano Miccoli (1) +

  • Michał Górny (2)

  • Jost Migenda (7) +

  • Suriyaa MM (1) +

  • Andrew Nelson (72)

  • newyork_loki (2) +

  • Nick ODell (33)

  • Dimitri Papadopoulos Orfanos (2)

  • Drew Parsons (1)

  • Gilles Peiffer (3) +

  • Matti Picus (1)

  • Jonas Pleyer (2) +

  • Ilhan Polat (116)

  • Akshay Priyadarshi (2) +

  • Mohammed Abdul Rahman (1) +

  • Daniele Raimondi (2) +

  • Ritesh Rana (1) +

  • Adrian Raso (1) +

  • Dan Raviv (1) +

  • Tyler Reddy (116)

  • Lucas Roberts (4)

  • Bernard Roesler (1) +

  • Mikhail Ryazanov (27)

  • Jan Möseritz-Schmidt (1) +

  • Daniel Schmitz (25)

  • Martin Schuck (25)

  • Dan Schult (29)

  • Mugunthan Selvanayagam (1) +

  • Scott Shambaugh (14)

  • Rodrigo Silva (1) +

  • Samaresh Kumar Singh (8) +

  • Kartik Sirohi (1) +

  • Albert Steppi (178)

  • Matthias Straka (1) +

  • Theo Teske (1) +

  • Noam Teyssier (1) +

  • tommie979 (1) +

  • Christian Veenhuis (1)

  • Pierre Veron (1) +

  • Shuhei Watanabe (1) +

  • Warren Weckesser (25)

  • WhimsyHippo (7) +

  • Rory Yorke (2)

  • Will Zhang (1) +

  • Eric Zitong Zhou (1)

  • Tingwei Zhu (1) +

  • Zhenyu Zhu (1) +

  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (38)

    A total of 117 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.17.0#

  • #1508: Riccati-Bessel functions are misspelled in the docs (Trac #981)

  • #3890: ENH: stats.logser: implement cdf/sf

  • #4487: “_solout” in “dopri5” class of “scipy.integrate” reverses the…

  • #5503: ENH: special.betainc: improve errors for extreme numbers of trials

  • #7931: scipy.special.tests.test_basic::TestCephes::test_fdtri fails…

  • #9023: Opportunity to add a seed or a random_state parameter to scipy.sparse.linalg.eig…

  • #9185: BUG: sparse.linalg: ARPACK error 1

  • #9460: BUG: sparse.linalg.eigs: sorting behavior reliability

  • #10744: BUG: sparse.linalg: Test failures with BLIS BLAS

  • #11805: Fatal Python error: Segmentation fault - test_arpack.py::test_symmetric_modes

  • #12513: BUG: optimize: Halting problem in trust-exact subproblem

  • #13222: porting scipy’s Fortran code to NAG’s nagfor compiler

  • #13671: QUERY: signal.coherence: discrepancy with Matlab

  • #13692: scipy.sparse.linalg.eigsh hangs for complex matrices on macOS

  • #13780: reprodcibility of scipy.sparse.linalg.svds

  • #14498: overwrite_data=True kwarg ignored when type=”constant” in scipy.signal.detrend

  • #14823: BUG: vectors/matrices produced by eigenvalues/vectors routines…

  • #15940: odeint (lsoda) emits too many warnings that are not filterable.

  • #16232: BUG: Memory leak due to new reference passed to non-stealing…

  • #18191: BUG: Iteration count in scipy.sparse.linalg._eigen.arpack greater…

  • #18736: TST: test_hermitian_modes test failure

  • #18919: BUG: Bad result (broadcasting ?) for binom.ppf and q=1, when…

  • #19291: BUG: firwin(pass_zero=False) does not block DC

  • #19756: BUG: sparse.linalg.eigsh: output eigenvector non-deterministic…

  • #19826: MAINT: follow-ups to gh-19724 (pytest pins, temporary CI changes,…

  • #19930: BUG: multivariate t broken for df=inf

  • #20050: ENH: interpolate: NdBSpline partial derivatives

  • #20339: BUG: Segfault in complex sparse eigen solver

  • #20835: BUG: special.fdtri: inaccurate results for extreme arguments…

  • #21039: ENH: Implement all relevant methods for sparse.dia_array

  • #21137: BUG: sparse.linalg.svds: ARPACK error -9: Starting vector is

  • #21156: DOC: integrate: tutorial help command output is out…

  • #21541: ENH: spatial: Rotation.__mul__: handle non-Rotation

  • #21563: ENH: stats.percentileofscore: 2D array input should be fixed…

  • #21716: DOC: conda-forge compilers package now also usable on windows

  • #21936: BUG: *ger* routines in linalg.blas are not thread-safe

  • #22053: MAINT: Cython lint failures in build output

  • #22310: BUG: scipy.sparse.linalg.eigsh returns an error when LinearOperator.dtype=None

  • #22365: BUG: ndimage: C++ memory management issues in _rank_filter_1d.cpp

  • #22412: RFC/API: move clarkson_woodruff_transform from linalg

  • #22500: ENH: spatial.transform: Add array API standard support

  • #22510: performance: _construct_docstrings slow in scipy.stats

  • #22682: BUG: special.betainc: inaccurate/incorrect for small a and b…

  • #22794: ENH: add weights param to stats.quantile similarly to…

  • #22871: BUG: stats.sigmaclip: returns strange thresholds

  • #22880: BUG: interpolate: Akima1DInterpolator raises ValueError for valid…

  • #22887: DEV: follow-up tasks after merge of spin support

  • #22974: ENH: sparse.linalg: Krylov methods for matrix functions

  • #22979: DOC: optimize.nnls: squared 2-norm instead of 2-norm?

  • #22980: DEV: spin test -b all adds --pyargs scipy twice

  • #23021: DEV: can we ‘scrape’ package-wide make_xp_test_case info?

  • #23053: DEV: spin smoke-docs adds an option twice

  • #23080: BUG: optimize: too many open files with multiprocessing

  • #23101: BUG: special: Discontinuity in associated Legendre functions

  • #23111: BUG: stats.pmean: wrong value for infinite orders

  • #23116: BUG: UserWarning due to spin build

  • #23124: CI: (re-)adopt (d)tach for modularity enforcement

  • #23136: DEV/DOC: update vendored code pages for _lib.decorator

  • #23160: DOC: signal.medfilt: remove outdated note

  • #23166: BENCH/DEV: spin bench option --quick is useless (always…

  • #23171: BUG: interpolate.RegularGridInterpolator fails on a 2D grid…

  • #23204: BUG/TST: stats: XSLOW test failures of ttest_ind

  • #23208: DOC: Missing docstrings for some warnings in scipy.io

  • #23231: DOC: Fix bug in release notes for scipy v1.12.0

  • #23237: DOC: Breadcrumbs missing and sidebar different in API reference…

  • #23248: BUG/TST: differentiate test_dtype fails with float16

  • #23297: BUG [nightly]: spatial.transform.Rotation.from_quat: fails for…

  • #23301: BUG: free-threading: functionality based on multiprocessing.Pool…

  • #23303: BUG: spatial.transform.Rotation: Warning Inconsistency

  • #23330: BUG: special.kv: incorrect translation of AMOS Fortran code resulting…

  • #23334: DEV: spin lint: use sys.executable always

  • #23344: CircleCI benchmarks job requires hypothesis

  • #23345: DOC: Incorrect dimension of PPoly.c in docstring

  • #23352: DOC: spatial.is_valid_dm: misleading documentation

  • #23355: Chatterjee’s Xi returns different results based on numpy

  • #23358: BUG: stats: ppf of 0 returns a value outside the distribution…

  • #23369: DOC: interpolate: NearestNDInterpolator works with multi-dimensional…

  • #23371: BUG: (interpolate) _dierckx.data_matrix gives ValueError if input…

  • #23382: BUG: setting with sparse.xxx_{matrix,array} 2D singleton

  • #23383: DOC/DEV: correct editable install spin guidance

  • #23391: ENH: spatial.transform: array API standard support tracker

  • #23400: ENH: spatial.geometric_slerp: allow for extrapolation

  • #23409: BUG: stats.qmc.Sobol: stuck in infinite loop in low_0_bit after…

  • #23412: TST: stats: marray tests failing with latest array-api-strict

  • #23418: BUG: scipy.signal.square ignores input dtype due to incorrect…

  • #23423: CI: new BLAS tests ci jobs don’t respect ci skips

  • #23431: DOC: interpolate.RbfInterpolator: incorrect equation in Notes

  • #23449: DOC/ENH: signal.get_window: different default for symmetric/periodic…

  • #23462: BUG: sparse: load_npz fails for coo_arry with dim>2

  • #23477: DOC: The file scipy/_lib/_lazy_testing.py has been removed

  • #23510: BUG: NdBSpline segfaults for too high derivative orders

  • #23514: DOC: add LFX Insights badge to README

  • #23517: SHGO: issue passing args to objective function

  • #23542: BUG: interpolate: Internal error from fpknot while running…

  • #23551: BUG: stats.levene: test results are incorrect when center="trimmed"

  • #23553: BUG: scipy.sparse.csgraph.yen crashes with out-of-bounds source…

  • #23555: BUG: lfilter with empty a array can trigger misleading error…

  • #23556: BUG: deconvolve with empty divisor or signal arrays causes inconsistent…

  • #23559: DOC: stats: A reference in the fligner docstring occurs twice.

  • #23581: BUG: xp_capabilities adds empty lines to docstrings

  • #23596: DOC: wrong version for stats.f_oneway’s equal_var parameter

  • #23603: TST: adapt to NumPy warning change (mean of empty slice)

  • #23608: DOC: Being clear about the distribution of scipy.spatial.transform.Rotation.ra

  • #23640: BUG: optimize: incorrect termination criteria in minpack LMSTR?

  • #23644: BUG: sparse: csc_array.setdiag() makes indices unsorted without…

  • #23670: BUG: xp_promote and xp_result_type are slow for big tensors…

  • #23678: BUG: stats: custom distribution generated from zipfian has…

  • #23686: BUG: Hang in scipy 1.16.2 on macOS x86_64 in scipy.sparse.linalg.eigsh…

  • #23689: CI: optimize: “UserWarning: ‘where’ used without ‘out’” error…

  • #23703: DOC: special: second parameter in the factorialk docstring…

  • #23704: DOC: optimize: typo in LinearConstraint docs

  • #23708: TST: FAILED scipy/stats/tests/test_continuous.py::TestDistributions::test_func

  • #23710: BUG: signal/tests/test_short_time_fft.py::test_closest_STFT_dual_window_roundt

  • #23711: BUG: stats/tests/test_axis_nan_policy.py::test_axis_nan_policy_axis_is_None

  • #23715: BUG: integrate: benchmark integrate.CubatureOscillatory.time_plain…

  • #23720: TST: test_as_euler_symmetric_axes tol with torch

  • #23742: QUERY: Fitting 4 parameters beta distribution leads to unexpected…

  • #23750: TST: signal: Add better isolation to alternative backend tests…

  • #23760: DOC/DX: spin ipython --help missing required use of --

  • #23762: ENH: interpolate.RegularGridInterpolator: eliminate_zeros()

  • #23763: BUG: scipy.odr.ODR Segmentation Fault with job=1 and Explicit…

  • #23778: ENH: Improve performance of converting csc arrays to csr arrays…

  • #23825: TST: Missing tests for mathieu_even_coef, mathieu_odd_coef

  • #23832: DOC: Broadcasting in stats.quantile

  • #23852: BUG/TST: stats: New XSLOW failures in stats

  • #23867: BUG: special.comb(0, 0, repetition=False) == 0 , not 1

  • #23879: DOC: RigidTransform.as_components doc is incorrect

  • #23910: TST: stats: free-threaded failure in test_non_finite_inputs_and_int_bins

  • #23925: DOC: Invalid documentation of parameter “shape” of the “scipy.sparse….

  • #23932: CI: mypy and clang jobs failing with “unused function” error…

  • #23989: CI: hang in windows job, OpenMP clash

  • #24043: DEV: switch from dtach to tach

  • #24046: TST: stats: TestStudentT.test_moments_t failure

  • #24052: CI: TypeError: Multiple namespaces for array inputs

  • #24089: ENH: spatial.transform: Add normalize argument to Rotation.from_matrix

Pull requests for 1.17.0#

  • #19668: ENH: optimize.minimize: add subproblem_maxiter option for…

  • #21683: ENH:MAINT:integrate: Rewrite DOP F77 code in C

  • #22041: BUG: Perform Py_DECREF on obj to avoid memory leak

  • #22506: ENH: special.btdtria: migrate to boost

  • #22539: ENH/MAINT: migrate special.chndtr and its inverses to boost

  • #22644: ENH: stats.quantile: methods to support trimming/Winsorizing

  • #22699: ENH: special: boostify F distribution functions

  • #22743: ENH: ILP64 BLAS/LAPACK support

  • #22748: ENH:MAINT: sparse.linalg: rewrite ARPACK in C

  • #22795: ENH: special: add more functions to _support_alternative_backends

  • #22827: ENH: stats: add marray support to a few remaining functions

  • #22856: MAINT: stats: ensure functions work on non-default device

  • #22857: ENH: stats: add array API support to much of _axis_nan_policy

  • #22885: MAINT: eager_warns: accept xp as keyword-only argument

  • #22889: MAINT: migrate special.btdtrib to boost

  • #22907: BENCH: stats.qmc.geometric_discrepancy: add benchmarks

  • #22911: ENH: signal: Array API for filter design functions

  • #22914: ENH: signal: Add Array API compatibility to the filter_design

  • #22924: ENH: linalg: low-level nD support, take 3

  • #22925: ENH: stats: Add matrix variate t distribution

  • #22938: TST: signal add test coverage to the handling of new set…

  • #22962: MAINT: migrate stdtr and stdtrit to boost

  • #22972: ENH: spatial.transform.RigidTransform: refactor into pure Python…

  • #22983: ENH: sparse.linalg: a restarted Krylov method for evaluating…

  • #22989: ENH: cluster: vectorize is_isomorphic

  • #23006: REL: set version to 1.17.0.dev0

  • #23009: ENH: sparse: efficient conversion from DIA to CSR format

  • #23012: BENCH: asv benchmarks for alternative array backends

  • #23015: DOC: scipy.signal.ShortTimeFFT.k_max: Fix slice index

  • #23016: MAINT: bump minimum NumPy version

  • #23019: BUG: interpolate.Akima1DInterpolator: Identical Rearrangement…

  • #23020: ENH: interpolate.BSpline: add array API standard interface

  • #23023: DEP: stats: remove find_repeats

  • #23026: DEV: Remove --parallel and rely on spin‘s --jobs

  • #23028: MAINT: create _lib._array_api_override to solve circular…

  • #23034: DEP: linalg.interpolative: remove seed and rand

  • #23039: TYP: fix and improve the linalg._decomp_lu_cython stub

  • #23041: DOC/DEV: Updated developer docs for spin

  • #23043: DEP: linalg: remove kron

  • #23045: DEP: interpolate.interpnd: remove incidental imports from private…

  • #23050: DEV: add spin notes and spin authors commands

  • #23052: ENH: interpolate: array API for BSpline-based make_ functions

  • #23057: ENH: Speed up array_namespace through caching

  • #23058: CI: clean up free-threading job, use released Cython/Pythran

  • #23059: MAINT: remove nan-handling from _factorialx_array_exact

  • #23060: DOC: Revise a footnote in meson-distutils

  • #23062: DEV: help debug free-threading build of Fortran modules

  • #23063: DEV: ignore pixi-dev-scipystack dirs

  • #23065: ENH: stats.tukey_hsd: improve array index iteration in TukeyHSDResult.__str__`

  • #23071: ENH: linalg: low-level batching support in solve

  • #23073: TST: linalg: refactor test_blas

  • #23078: MAINT: smoke-docs: add a --doctest-only-doctests flag to…

  • #23081: DOC: Add tables summarizing array API backend capabilities across…

  • #23082: TST: linalg: thread-safe rng

  • #23083: TST: linalg: pytest-run-parallell out of memory

  • #23084: TST: linalg: race condition in BLAS ger*

  • #23085: TST: signal: fix flaky TestZpk2Sos

  • #23087: CI: move pre-release and free-threading jobs to CPython 3.14-dev

  • #23089: ENH/DEP: linalg: support batching for toeplitz and related functions

  • #23092: DEV: Address issues in spin docs command

  • #23093: DEV: remove duplicate --doctest-collect=api in spin smoke-docs

  • #23094: DOC: linalg: fix overview for cdf2rdf and khatri_rao

  • #23095: DEV: remove python dev.py in favor of spin

  • #23096: CI: move to cibuildwheel 3.0b4 and to manylinux_2_28

  • #23104: ENH: stats: Dask support for variation

  • #23105: ENH: stats: Dask and JAX support for pearsonr

  • #23108: MAINT: Remove optional arguments from *_impl functions in…

  • #23112: MAINT: remove duplicated test in stats.tests.test_stats.py

  • #23117: BUG: remove cdef exports in linalg._decomp_interpolative

  • #23118: TYP: generic signal.ShortTimeFFT type

  • #23121: BUG: sparse.linalg.LaplacianNd: periodic eigenvectors

  • #23123: TYP: Disable NumPy’s deprecated mypy plugin

  • #23125: MAINT: Update vendored _lib.decorators module to v5.2.1

  • #23129: DOC: special.roots_jacobi: add example to docstring

  • #23130: DEV: spin: change shorthand of --setup-args to -S to…

  • #23138: MAINT: sparse: remove python 2 remnants from _spbase

  • #23140: TST: Fix missing exceptions

  • #23143: TST: Run pytest-run-parallel on xp tests

  • #23149: TST: ndimage.vectorized_filter: add missing assertion to test

  • #23151: CI: use 4 cores on GitHub Actions

  • #23152: TST: io: reduce peak memory usage 9x

  • #23153: TST: optimize: cap pytest-run-parallel memory usage

  • #23173: ENH/DOC: signal.hilbert: Refactor to avoid extra scaling array…

  • #23175: MAINT: Bump array-api-compat; speed up array-namespace

  • #23176: BUG: spin bench ignores --quick parameter

  • #23181: DOC: spatial: Rigid Transformation docs cleanup

  • #23190: BUG/BENCH: remove unconditional --quick from spin bench

  • #23193: ENH: spatial: optimize performance of RigidTransform

  • #23194: MAINT: Improve error type for RigidTransform.from_rotation

  • #23198: ENH: spatial.transform.Rotation: refactor into pure Python class…

  • #23201: DOC : removes outdated notes from the medfilt function

  • #23202: DEP: spatial: raise error for complex input to cosine and correlation

  • #23205: TST: stats.ttest_ind: remove test of deprecated/removed permutations

  • #23207: CI: always set Python in array API testing

  • #23210: DEP: spatial.distance: remove kulczynski1 and sokalmichener metrics

  • #23212: DEP: signal: remove support for object arrays and longdoubles…

  • #23213: MAINT: forward port 1.16.0 relnotes

  • #23218: ENH: sparse: Add COO indexing for 1d, 2d, and nD

  • #23223: MAINT: port _test_fortran.f to Python functions in test_fortran.py

  • #23224: MAINT: _lib: remove old/unneeded code

  • #23232: DOC: Fix typo in 1.12.0-notes.rst

  • #23233: ENH: Implement support for bc_type="periodic" in make_splrep

  • #23234: TYP: generic interpolate types

  • #23243: DEP: special: remove deprecated functions

  • #23244: TYP: generic optimize types

  • #23247: ENH/DOC: signal.hilbert2: Refactor to avoid extra scaling array…

  • #23249: ENH: spatial.transform.Rotation: add array API backend

  • #23253: BUG: interpolate.RegularGridInterpolator: fix linear interp….

  • #23254: DOC: special: LaTeX cleanup

  • #23255: MAINT: spatial._plotutils: remove matplotlib 1 code

  • #23256: MAINT: remove _lib._threadsafety

  • #23257: DOC: add orphaned modules to toctree

  • #23258: MAINT: sparse testing without decorator

  • #23259: ENH: stats: Logistic distribution

  • #23260: MAINT: Remove _lib.decorator

  • #23262: TST: sparse.linalg: improve coverage for funm_multiply_krylov

  • #23264: TST: test_axis_nan_policy: skip on unexpected exceptions

  • #23265: TST: signal: add test for zpk2tf with multi-dimensional arrays

  • #23267: MAINT: sparse: move _validate_indices and _asindices

  • #23271: DOC: interpolate.make_interp_spline: fix minor formatting typos…

  • #23273: DOC: interpolate.make_splprep: fix dimensions ordering

  • #23274: MAINT:sparse.linalg: ARPACK to Arnaud rename and project structure…

  • #23275: TST: migrate away from suppress_warnings and assert_warns

  • #23286: TST: signal: clean-up tests post array api conversion

  • #23287: MAINT: differentiate: add xp_capabilities

  • #23288: MAINT: optimize: mark functions with xp_capabilities

  • #23289: DOC: Add link to Golub and Van Loan’s book “Matrix Computations”

  • #23290: TST: differentiate: use correct xp_capabilities for jacobian

  • #23291: BENCH: sparse: parameterize benchmark with sparse arrays and…

  • #23294: TST: better thread-unsafe markers and re-enable pytest-run-parallel…

  • #23298: BUG: spatial.transform.Rotation.from_quat: fix dtype inference…

  • #23300: DOC: development_workflow: fix SciPy’s commit guideline link

  • #23304: TST: optimize: Speed up test__basinhopping

  • #23305: TST: linalg: make test_expm_multiply friendly to pytest-run-parallel

  • #23306: TST: free-threading performance tweaks

  • #23307: TST: free-threading: More local RNGs

  • #23311: MAINT/TST: always use forkserver multiprocessing on POSIX

  • #23313: BLD: support build warnings for flang/clang-cl on Windows

  • #23317: BUG: sparse.linalg: fix arpack complex arrays on windows

  • #23319: TST: io.wavfile: add test for SeekEmulatingReader.seek

  • #23320: BUG:DOC: sparse.linalg: Fix more arnaud bugs and add C code documentation

  • #23324: BUG: stats: avoid building docstrings if python is run with -OO

  • #23325: DOC: interpolate/RBF: tweak the docstring example, tweak dimensions

  • #23326: DEV: remove non-generated file from .gitignore

  • #23327: DOC/BUG: Fix a few dynamically modified docstrings.

  • #23331: TST: Read @xp_capabilities from pytestmark

  • #23340: DEP/MAINT: sparse: change default dtype behavior of ‘diags_array’…

  • #23341: BUG: signal: zpk2tf: support array-api-strict on multi-dim arrays

  • #23343: DOC: Fix trivial typos

  • #23346: DOC: correct dimensions of PPoly.c in docstring

  • #23349: BENCH, TST: benchmarks without hypothesis

  • #23350: BUG: linalg: fix solve(..., assume_a='pos', lower=False)

  • #23354: DEV: Use sys.executable everywhere in spin lint

  • #23357: ENH, MAINT: linalg: assume_a=”diagonal” for solve and inv

  • #23359: DOC: Add example to show_config()

  • #23360: DOC: io: add docstrings to warnings and errors

  • #23362: MAINT: linalg.{inv, solve}: better error reporting for batched…

  • #23366: DOC: Clarify that is_valid_dm doesn’t check triangle inequality

  • #23368: TST: linalg: small tolerance bump for test_orth_memory_efficiency

  • #23370: ENH: spatial: add ability to suppress gimbal lock warnings for…

  • #23374: DOC: corrected the docstring of NearestNDInterpolator

  • #23375: ENH: Add NdBSpline.derivative method

  • #23381: MAINT: stats: Apply xp_capabilities decorator to all public functions

  • #23388: DOC: fix array api support table

  • #23389: MAINT: cluster.hierarchy: mark set_link_color_palette as out…

  • #23392: MAINT: datasets: mark functions as out of scope for array api…

  • #23393: DOC: remove manual array api support list

  • #23394: DOC: stats.rv_continuous.ppf/isf: document convention

  • #23399: ENH: add Accelerate ILP64 support and CI job

  • #23401: DOC: forward port 1.16.1 relnotes

  • #23404: DOC: special: fix output shape of *_all functions

  • #23405: MAINT:BLD:_lib: Remove deprecated Python TLS fallback code from…

  • #23406: DOC: stats.false_discovery_control: added note that input does…

  • #23410: MAINT: integrate: add xp_capabilities to public functions

  • #23415: MAINT: ndimage: add xp_capabilities to functions in public…

  • #23416: DOC: Add complexity remark to scipy.stats.kendalltau

  • #23420: MAINT: break import dependencies between special-linalg and linalg-sparse

  • #23421: DX: don’t lint cython build output

  • #23422: DOC: special: add example to ellipeinc and correct docstring…

  • #23424: ENH: spatial: optimize performance of Rotation

  • #23425: ENH: spatial.transform.RigidTransform: add array API backend

  • #23426: ENH: spatial.geometric_slerp: allow for extrapolation

  • #23427: DOC: stats.chatterjeexi: document how to handle ties in x

  • #23432: DOC: interpolate.RBFInterpolator: fix typo

  • #23434: CI: fix skip conditions in linux_blas.yml jobs

  • #23439: DOC: special: Add some simple examples for loggamma.

  • #23443: BUG: stats.qmc: Avoid infinite loop in sobol when requesting…

  • #23453: MAINT: Support ruff 0.12

  • #23454: ENH, MAINT: simpler calculate_areas()

  • #23456: DOC: Update link to Jupyter Project Governance

  • #23463: DOC: sparse.kronsum: add example

  • #23465: BUG: sparse: nD sparse save_npz and load_npz

  • #23466: DOC: Remove boilerplate text in a remark

  • #23467: ENH: spatial.transform.Rotation: support broadcasting

  • #23468: DOC: optimize.shgo: correct minimize_every_iter description

  • #23470: DOC: Update a link about numba support

  • #23473: DOC: special.hankel1: add example and remove old docstring copy

  • #23476: DEP: signal.lombscargle: deprecate argument precenter

  • #23479: DOC: Update outdated lazy_xp_function references

  • #23483: ENH: signal.abcd_normalize: Refactor, improve docstr, and make…

  • #23486: DOC: special: remove duplicated docstrings

  • #23489: DOC: clarify nnls minimizes squared 2-norm (closes #22979)

  • #23491: DOC: signal.detrend: clarify overwrite_data behaviour

  • #23492: DOC: remove help(integrate) output

  • #23494: ENH: integrate.quad: shortcut if upper/lower bounds are equal

  • #23496: DOC: special: added refs to Digital Library of Math. Functions

  • #23497: ENH: integrate.romb: array-API support

  • #23498: TST: additional tests if integrate.quad upper/lower bounds…

  • #23499: ENH: update boost to 1.89

  • #23501: ENH: integrate.cumulative_trapezoid: add array API support

  • #23502: DOC: add header to array api support in docstring

  • #23504: BUG: stats: trapezoid.fit does not converge

  • #23507: ENH: add array api support for linalg.orthogonal_procrustes

  • #23511: DOC: interpolate: Ndbspline derivative methods list

  • #23512: MAINT: remove unused cdflib code

  • #23513: ENH: integrate.cumulative_simpson: add array api support

  • #23518: ENH/BUG: signal.get_window: Refactor and allow ‘_periodic’ and…

  • #23520: BUG: shgo mutating user supplied dictionaries

  • #23521: BUG: shgo should accept args for fun/jac/hess

  • #23523: MAINT: Use reshape instead of setting the shape attribute for…

  • #23524: MAINT: Use reshape instead of setting the shape attribute for…

  • #23526: MAINT: Use reshape instead of setting the shape attribute for…

  • #23528: CI: swap to windows-2025 [wheel build]

  • #23531: ENH:MAINT: sparse.linalg: Rewrite PROPACK in C

  • #23534: ENH: sparse: add funcs swapaxes, permute_dims, expand_dims

  • #23535: BUG: special: Fix switched overflow and underflow error messages.

  • #23536: DOC: Convert math symbols into Latex for format consistency

  • #23537: ENH: Add two private ufuncs related to generalized harmonic numbers.

  • #23538: MAINT: differential_evolution, polish takes a callable

  • #23547: linalg.solve: move “sym”/”her” solvers to C

  • #23557: BUG: fix levene and fligner test incorrect results with trimmed…

  • #23558: DOC: special.modfresnelm docstring equation fix

  • #23562: DOC: Fix duplicate and dead link in fligner docstring

  • #23565: DOC/DEV: update editable install guidance for spin install

  • #23566: MAINT: Use np.view instead of setting dtype

  • #23569: ENH: interpolate.FloaterHormannInterpolator: add axis parameter

  • #23572: DOC: Fix a few typos in API Reference

  • #23573: MAINT: slsqp callback accepts intermediate_result

  • #23574: ENH: linalg.fiedler: add native batch support and array api support

  • #23575: MAINT: use boost master branch

  • #23579: ENH: interpolate.AAA: add diagonal scaling to improve conditioning

  • #23584: ENH: migrate special.chdtriv to boost

  • #23585: MAINT: remove empty lines added to docstring by various decorators

  • #23586: MAINT: bump array-api-extra to v0.9.0

  • #23588: MAINT: Test spatial.transform.Rotation.__iter__ with jit

  • #23590: ENH: linalg.block_diag: add array api support

  • #23591: DOC: Remove typo

  • #23592: MAINT: special: Replace disrecommended assert functions with…

  • #23598: DOC: Fix format issues in API Reference

  • #23599: DOC: stats.f_oneway: change versionadded to 1.16.0

  • #23600: MAINT: fix more memory management and error handling issues in…

  • #23601: DOC: forward port 1.16.2 relnotes

  • #23606: MAINT: signal: simplify cheb2ap formulas

  • #23607: BUG: signal.lfilter: More meaningful error messages for invalid…

  • #23609: BUG: signal.deconvolve: More meaningful error messages for invalid…

  • #23610: TYP: more generic integrate types

  • #23614: TST: shim for NumPy warning changes

  • #23616: BUG: ndimage: fix handling of memory allocation failures.

  • #23618: BUG: sparse.csgraph.yen: Validate source and sink to avoid seg….

  • #23620: MAINT: io: Improve spmatrix arg handling and description…

  • #23621: DOC/BUG: signal.firwin: Improve documentation

  • #23623: DOC: stats.levy_stable: improvements

  • #23625: ENH: sparse: Add DOK update method and tests

  • #23626: BUG:sparse: allow setting a singleton via a sparse container

  • #23627: DOC: spatial: Rotation.random: mention distribution in docstring

  • #23629: CI: use asv<0.6.5 to avoid problem with that release - fixes…

  • #23630: DEV: drop shallow from submodules

  • #23632: MAINT: spatial.transform.Rotation: from_euler/from_davenport

  • #23633: MAINT/TST: stats: loosen a test tolerance.

  • #23636: TST: stats: test against marray backend again

  • #23638: CI: adapt gpu-ci.yml to new Pixi workspace

  • #23645: MAINT:optimize: Fix missing pointer dereference in MINPACK

  • #23646: CI: fix issue with spin broken due to new click release

  • #23647: CI: fix issue with spin broken due to new click release (follow-up)

  • #23649: CI: use Pixi for array_api.yml and lint.yml

  • #23650: DOC: Update a reference link in scipy.optimize.root

  • #23653: MAINT: Fix spatial.transform.RigidTransform xp backend comments

  • #23654: CI: use Pixi for macos.yml

  • #23655: ENH: stats.truncpareto: allow negative exponent

  • #23658: CI: Pixi: use no-pin strategy and refactor environments

  • #23659: MAINT: signal: deduplicate _swapaxes helpers

  • #23661: DOC: Improve formatting in continuous distributions description

  • #23662: ENH: signal: Convert Savitzky-Golay filter to Array API

  • #23666: DOC/DEV: Document scipy.signal‘s Array API caveats.

  • #23667: ENH: integrate.qmc_quad: add array API support

  • #23668: MAINT: signal: tighten the workaround for object arrays

  • #23669: DOC: linalg: document batch support

  • #23671: DOC: Update stable version switcher button styles in CSS

  • #23674: MAINT: fix whitespace test

  • #23675: ENH: spatial.transform.RigidTransform: support broadcasting

  • #23676: BUG: Fixes #23644: sparse: csc_array.setdiag() makes indices…

  • #23677: ENH: sparse: Add nD kron sparse construction

  • #23679: MAINT/STY: spatial._kdtree: Fix type of default value of…

  • #23680: MAINT: linalg.hankel: warn against changing behavior for multidimensional…

  • #23683: MAINT: sparse: avoid recent free-threading test_matrix_io.py

  • #23688: MAINT: Remove ‘o’ (Greek omicron) from allowed symbols.

  • #23690: DOC: spatial.transform.Rotation: update docs

  • #23692: MAINT: stats.pmean: enforce finite p requirement

  • #23693: ENH: stats.mode: add array API support

  • #23694: DOC: Correct minor formatting issues in scipy.sparse.linalg

  • #23695: DOC: spatial.transform.RigidTransform: update docs

  • #23696: TST: special: avoid extremely slow edge cases in mpmath tests

  • #23697: DEV: improve spin build --help w.r.t. debug builds

  • #23699: DOC: stats.sigmaclip: results may not satisfy an intuitive property

  • #23702: ENH: stats.lmoment: add array API support

  • #23705: MAINT: stats.rv_discrete.ppf/isf: fix behavior with array args,…

  • #23706: MAINT: stats.multivariate_t.logpdf/pdf: fix infinite DOF special…

  • #23709: ENH: stats.alexandergovern: add array API support

  • #23713: TST: macos-15-intel

  • #23714: DOC: correct typo in factorialk parameters doc

  • #23716: TST: stats.Binomial.logcdf: improves precision in tails

  • #23717: ENH: Migrate special.pdtrik to boost

  • #23718: ENH: spatial: Implement RigidTransform.mean()

  • #23719: DOC: minor typo

  • #23721: TST: test_as_euler_symmetric_axes tol bump

  • #23724: DOC: Fixing scipy.linalg.polar u docstring.

  • #23726: Fix typo (coefficent -> coefficient)

  • #23727: MAINT: Consistent spatial.[c]KDTree method parameter defaults…

  • #23729: BUG: spatial: Fix shape of Rotation mean when ndim > 1

  • #23733: ENH: stats.logser: implement sf

  • #23735: CI: silence pyparsing 3.3.0a1 deprecation warnings

  • #23739: MAINT: stats: remove use of np.random.seed

  • #23740: Fix typo in documentation where Riccati is misspelled as Ricatti

  • #23741: DOC: signal.hilbert : example uses instantaneous frequency

  • #23743: Cygwin interpolate test xfail

  • #23744: ENH: stats.bootstrap: array API support

  • #23745: DOC: stats.beta: document issues with 3- and 4- parameter MLE

  • #23746: ENH: add Array API support to RBFInterpolator

  • #23752: DOC: Move a paragraph from code to markdown in ndimage tutorial

  • #23753: MAINT: interpolate: use xp-capabilities for make\_ functions

  • #23755: BUG: interpolate: fail gracefully if all weights are zero

  • #23758: ENH: implement gdtrix and gdtria using xsf’s incomplete…

  • #23759: ENH: interpolate: make NdBSpline and RGI Array API compatible

  • #23764: DOC: special: consistent modified Bessel order and fix Hankel…

  • #23765: TST: signal: isolate use of alternative backend only to function…

  • #23767: BUG: signal: Fix test_closest_STFT_dual_window_roundtrip

  • #23769: DOC: special._specfun.eulerb: fix cython docstring

  • #23770: MAINT: clean up some outdated CPython C API idioms

  • #23771: BUG: odr: prevent segfault with explicit model and job=1 (#23763)

  • #23772: ENH: stats.permutation_test: add array API support

  • #23773: DOC/DX: Document use of -- in spin ipython and spin python

  • #23775: ENH: stats.power: add array API support

  • #23779: ENH: stats.false_discovery_control: add array API support

  • #23780: ENH: interpolate.RegularGridInterpolator: remove zeroes from…

  • #23782: ENH: speedup quantile by not using stable sort

  • #23788: TST: some more test tol bumps

  • #23789: DOC: Improve formatting for the scipy.optimize module

  • #23792: CI: use Pixi for a windows job

  • #23795: MAINT: stats.iqr: prepare for array API translation

  • #23796: TST: still more test tolerance bumps to accommodate Accelerate

  • #23797: ENH: sparse: add copy=False arg to astype() where it…

  • #23802: BENCH: add simple benchmark for scipy.stats.quantile

  • #23803: ENH: stats.sigmaclip: add array API support

  • #23804: DOC: Convert a math narrative into LaTeX format [docs only]

  • #23807: ENH: stats.yeojohnson_llf: add array API support

  • #23808: DOC: Remove two references to files that do nothing

  • #23809: ENH: stats.median_abs_deviation: add array API support

  • #23810: ENH: stats.brunnermunzel: add array API support

  • #23812: DOC: fix typo

  • #23816: DOC: special.diric: “Dirichlet function” -> “Dirichlet…

  • #23819: ENH: stats.cramervonmises_2samp: vectorize statistic and asymptotic…

  • #23822: ENH: stats.kruskal: vectorize implementation

  • #23823: MAINT: interpolate: mark legacy functions out of scope for Array…

  • #23824: DOC: special.mathieu_odd_coef: “even” -> “odd”

  • #23828: ENH: spatial.transform.Rotation Add axis argument to Rotation.mean

  • #23831: DOC: Correct a few typos and indentations

  • #23834: ENH: stats.friedmanchisquare: simplify and vectorize implementation

  • #23835: DOC: stats.quantile: clarify broadcasting behavior

  • #23837: ENH: stats.mood: vectorize implementation

  • #23838: TST: special: Update tests for some Mathieu functions.

  • #23840: ENH: stats.levene: vectorize implementation

  • #23841: BLD: bump wheel build image

  • #23843: ENH: stats.ansari: vectorize implementation

  • #23844: DEV: move Pixi workspace to repo root

  • #23845: DOC: fix denominator in scipy.stats.kstatvar for var(k2)

  • #23846: DOC: Remove an invalid URL in References

  • #23847: ENH: stats.fligner: vectorize implementation

  • #23849: ENH: stats.chatterjeexi: add array API support

  • #23850: DOC: Improve documentation for the directed Hausdorff distance

  • #23851: ENH: stats.spearmanrho: array API compatible substitute for spearmanr

  • #23853: DOC: spin: Copy-edit help text for python and ipython commands.

  • #23855: TST: stats.multiscale_graph_correlation: update reference values

  • #23856: TST: sparse.linalg.tfqmr: avoid failure due to platform-dependent,…

  • #23858: DOC: Make a DOI clickable

  • #23861: DOC: Correct typos: an 1d -> a 1d

  • #23862: ENH: stats.kruskal: add array API support

  • #23863: ENH: special: add handling of double type for _gen_harmonic...

  • #23865: MAINT/TST: stats.yeojohnson_llf/boxcox_llf: fix/test nan_policy/keepdims…

  • #23866: DOC: Add reference paper to scipy.spatial.KDTree

  • #23869: ENH: spatial.transform.Rotation: Add shape to random and…

  • #23870: ENH: stats.mannwhitneyu: add array API support

  • #23871: DOC: stats: Fix some math markup in the boxcox docstring.

  • #23873: DOC: Update scipy.stats.moyal reference to new URL

  • #23874: TST: spatial.transform.Rotation: fix Rotation.random tests

  • #23875: ENH: spatial.transform.RigidTransform: implement shape for…

  • #23876: DOC: Add DOI to reference paper in fractional_matrix_power

  • #23877: MAINT/CI: use dtach for modularity enforcement

  • #23880: TST: interpolate.AAA: bump test tolerance

  • #23881: ENH: stats.epps_singleton_2samp: vectorize implementation

  • #23883: DOC: forward port 1.16.3 relnotes

  • #23887: DOC: correct grammar issues in code comments

  • #23889: ENH: stats.levene: add array API support

  • #23890: DOC/TST: stats.quantile: document and test JAX support

  • #23891: ENH: stats.iqr: add array API support

  • #23893: MAINT: stats.epps_singleton_2samp: NaNs/Infs in input -> NaNs…

  • #23895: BUG: linalg: fix MKL ILP64 symbol misnamings

  • #23897: DOC: sparse: Add examples sections to three new function doc_strings

  • #23898: ENH: stats.wilcoxon: add array API support

  • #23899: ENH: stats.friedmanchisquare: add array API support

  • #23903: TST: signal: mark failing tests to unblock CI

  • #23904: BENCH: integrate: skip xslow benchmarks in CI

  • #23905: CI: free up disk space in Intel oneAPI workflow

  • #23911: TST: stats: avoid modifying shared self.u

  • #23912: ENH: stats.fligner: add array API support

  • #23914: ENH:integrate: Rewrite LSODA in C

  • #23915: BUG: special: Fix convergence criterion in eval_{legendre,

  • #23917: DOC: special: Ellipsoidal harmonic functions aren’t Lame

  • #23920: DEV: update CODEOWNERS

  • #23921: BUG:signal: Ensure consistent dtypes for filter functions across…

  • #23922: BUG: optimize: add py314 wrapper for inspect.signature of…

  • #23928: ENH: stats.cramervonmises_2samp: add array API support

  • #23929: ENH: stats.epps_singleton_2samp: add array API support

  • #23930: ENH: stats._xp_searchsorted: private vectorized searchsorted

  • #23933: ENH: spatial.transform: add axis argument to RigidTransform.mean

  • #23934: DOC: spatial: RigidTransform docs tweaks

  • #23936: BLD/CI: Add ASAN suppressions and CI job

  • #23937: TST: spatial.transform.RigidTransform: Add ND concatenation…

  • #23940: BUG: sparse.csgraph: remove rel import to fix Cython 3.2

  • #23941: ENH: stats.quantile: add support for frequency weights

  • #23942: DOC correct “shape” type for “scipy.sparse.random_array”

  • #23948: DOC: stats.cumfreq: correct bin edges of plot

  • #23952: MAINT: stats: silence the “unused function” build noise from…

  • #23954: BENCH: interpolate: fix the RGI subclassing benchmark

  • #23955: DOC: list classes in Array API tables

  • #23956: MAINT: add xp-capabilities to BSpline

  • #23963: ENH:integrate: Rewrite VODE and ZVODE in C

  • #23964: ENH: stats.ks_1samp: vectorize implementation

  • #23966: ENH: stats.cramervonmises: vectorize and add array API support

  • #23970: ENH: stats.ks_1samp: add array API support

  • #23971: ENH: stats.ansari: add array API support

  • #23974: ENH: stats: Updated tabulated critical values for the normal…

  • #23975: MAINT: signal: remove an obsolete workaround in detrend

  • #23976: DOC: interpolate.interpn: add value comparison to example

  • #23979: BUG: special: fix comb(n, 0, repetition=True) returning 0

  • #23981: ENH: stats._xp_searchsorted: simplification, edge case handling,…

  • #23982: DEV: update Pixi workspace name and description

  • #23984: DEV: update CODEOWNERS

  • #23986: MAINT: sync and update scipy-openblas to 0.3.30.0.8

  • #23987: CI: reduce cache usage in GitHub Actions

  • #23988: CI: add environments args to setup-pixi to log dependencies

  • #23993: BLD/DEV: force openblas on Windows

  • #23994: DOC/BLD: Clarify yum usage in RHEL

  • #24003: MAINT: stats: re-enable the “unused function” warning in qmc…

  • #24004: CI: use stable numpy release in free-threading job

  • #24006: MAINT: removes a reference cycle in optimize.differential_evolution

  • #24007: TST: optimize.least_squares: reduce process count and thread…

  • #24008: BUG: fix interpreter crashes in special functions related to…

  • #24012: TST: optimize.minimize: make trust-constr test thread safe by…

  • #24013: BUG: Ensure C-contiguous inputs in _fitpack_repro._validate_inputs

  • #24016: CI: run cache-heavy OneAPI job on main every 2 days to optimize…

  • #24017: BUG: special.assoc_legendre_p: update xsf to fix z=-1,

  • #24023: TST: integrate.qmc_quad: tolerance bump

  • #24024: ENH/TST: signal: Add xp_capabilities for scipy.signal

  • #24025: DOC: stats: add equations for Cramer von Mises functions

  • #24028: MAINT:integrate: Initialize variable to silence compiler warnings

  • #24029: ENH: stats.mood: add array API support

  • #24033: DEP: deprecate scipy.odr

  • #24036: CI: run Windows OneAPI job on main every 2 days to prefetch cache

  • #24039: DOC/TST: fft: mark array api coverage with xp_capabilities

  • #24040: DOC: add LFX Insights badge to README

  • #24044: DOC: optimize.minimize: fix subproblem_maxiter docs for trust-exact

  • #24045: MAINT: signal: remove stray np.testing assertions

  • #24047: TST: stats.t: add tolerance to moment test

  • #24048: DEV: switch from dtach to tach

  • #24049: MAINT: speed up xp_promote and xp_result_type for big…

  • #24050: DEV: remove unused build-mkl task from workspace

  • #24053: BUG: signal: fix a GetWindow test

  • #24056: ENH: spatial: factor out from_matrix orthogonalization for…

  • #24057: MAINT: Fix a deprecation warning coming from pytest-run-parallel

  • #24059: CI: revert pre-release NumPy and no isolation from np2 release…

  • #24061: MAINT: fix a typo in nnls documentation

  • #24063: TST: linalg/solve: reenable and fix the “pos def” solve test

  • #24067: DEV: add test-coverage and test-xslow tasks

  • #24068: DEV: tach: use respect_gitignore = "if_git_repo"

  • #24070: MAINT: interpolate/RBF: use fixed-width ints with pythran

  • #24071: DEV: add bench task

  • #24076: BUG: Return zero for out-of-range derivative orders in NdBSpline...

  • #24077: MAINT: lock Pixi to fix CI

  • #24080: DEP: signal.lombscargle: deprecate positional args, warn on precenter=False

  • #24083: ENH: stats.f_oneway: add array API support

  • #24085: DOC: linalg: edit the doc note: we no longer import numpy linalg…

  • #24092: ENH: spatial.transform: Add assume_valid argument to Rotation.from_matrix`

  • #24094: TST: fft: allow_dask_compute for all uarray-using funcs

  • #24095: DOC: differential_evolution - fix typo in custom strategy example

  • #24097: ENH: stats: added marginal function to stats.multivariate_t

  • #24098: TST: linalg: unskip a test

  • #24106: BUG: interpolate: Fix h[m] -> h[n] typo in _deBoor_D derivative…

  • #24107: ENH: linalg/solve: move the tridiagonal solve slice iteration…

  • #24113: DOC: signal: mark some legacy functions as out of scope for array…