chore(deps): update dependency scipy to ~1.16 #29

Open
renovate-bot wants to merge 1 commits from renovate/scipy-1.x into master
Owner

This PR contains the following updates:

Package Type Update Change
scipy dependencies minor ~1.10 -> ~1.16

Release Notes

scipy/scipy

v1.16.3

Compare Source

SciPy 1.16.3 Release Notes

SciPy 1.16.3 is a bug-fix release with no new features compared to 1.16.2.

Authors

  • Name (commits)
  • ChrisAB (1) +
  • Lucas Colley (1)
  • Ralf Gommers (3)
  • Matt Haberland (8)
  • Nick ODell (2)
  • Ilhan Polat (1)
  • Tyler Reddy (28)
  • Lucas Roberts (2)

A total of 8 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.

The full issue and pull request lists, and the release asset hashes are available
in the associated README.txt file.

v1.16.2

Compare Source

SciPy 1.16.2 Release Notes

SciPy 1.16.2 is a bug-fix release with no new features
compared to 1.16.1. This is the first stable release of
SciPy to provide Windows on ARM wheels on PyPI.

Authors

  • Name (commits)
  • Dietrich Brunn (1)
  • Ralf Gommers (6)
  • Adam Jones (1)
  • Gleb Khmyznikov (1) +
  • Jost Migenda (1) +
  • newyork_loki (1)
  • Nick ODell (3)
  • Dimitri Papadopoulos Orfanos (1)
  • Ilhan Polat (2)
  • Tyler Reddy (26)
  • Mugunthan Selvanayagam (1) +
  • Shuhei Watanabe (1) +

A total of 12 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.

The full issue and pull request lists, and the release asset hashes are available
in the associated README.txt file.

v1.16.1

Compare Source

SciPy 1.16.1 Release Notes

SciPy 1.16.1 is a bug-fix release that adds support for Python 3.14.0rc1,
including PyPI wheels.

Authors

  • Name (commits)
  • Evgeni Burovski (1)
  • Rob Falck (1)
  • Ralf Gommers (7)
  • Geoffrey Gunter (1) +
  • Matt Haberland (2)
  • Joren Hammudoglu (1)
  • Andrew Nelson (2)
  • newyork_loki (1) +
  • Ilhan Polat (1)
  • Tyler Reddy (25)
  • Daniel Schmitz (1)
  • Dan Schult (2)

A total of 12 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.

The full issue and pull request lists, and the release asset hashes are available
in the associated README.txt file.

v1.16.0

Compare Source

SciPy 1.16.0 Release Notes

SciPy 1.16.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.16.x branch, and on adding new features on the main branch.

This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.

Highlights of this release

  • Improved experimental support for the Python array API standard, including
    new support in scipy.signal, and additional support in scipy.stats and
    scipy.special. Improved support for JAX and Dask backends has been added,
    with notable support in scipy.cluster.hierarchy, many functions in
    scipy.special, and many of the trimmed statistics functions.
  • scipy.optimize now uses the new Python implementation from the
    PRIMA package for COBYLA. The PRIMA implementation fixes many bugs
    in the old Fortran 77 implementation with a better performance on average.
  • scipy.sparse.coo_array now supports n-D arrays with reshaping, arithmetic and
    reduction operations like sum/mean/min/max. No n-D indexing or
    scipy.sparse.random_array support yet.
  • Updated guide and tools for migration from sparse matrices to sparse arrays.
  • Nearly all functions in the scipy.linalg namespace that accept array
    arguments now support N-dimensional arrays to be processed as a batch.
  • Two new scipy.signal functions, scipy.signal.firwin_2d and
    scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and
    scipy.signal.ShortTimeFFT dual window calculation, respectively.
  • A new class, scipy.spatial.transform.RigidTransform, provides functionality
    to convert between different representations of rigid transforms in 3-D
    space.
  • A new function scipy.ndimage.vectorized_filter for generic filters that
    take advantage of a vectorized Python callable was added.

New features

scipy.io improvements

  • scipy.io.savemat now provides informative warnings for invalid field names.
  • scipy.io.mmread now provides a clearer error message when provided with
    a source file path that does not exist.
  • scipy.io.wavfile.read can now read non-seekable files.

scipy.integrate improvements

  • The error estimate of scipy.integrate.tanhsinh was improved.

scipy.interpolate improvements

  • Batch support was added to scipy.interpolate.make_smoothing_spline.

scipy.linalg improvements

  • Nearly all functions in the scipy.linalg namespace that accept array
    arguments now support N-dimensional arrays to be processed as a batch.
    See linalg_batch for details.
  • scipy.linalg.sqrtm is rewritten in C and its performance is improved. It
    also tries harder to return real-valued results for real-valued inputs if
    possible. See the function docstring for more details. In this version the
    input argument disp and the optional output argument errest are
    deprecated and will be removed four versions later. Similarly, after
    changing the underlying algorithm to recursion, the blocksize keyword
    argument has no effect and will be removed two versions later.
  • Wrappers for ?stevd, ?langb, ?sytri, ?hetri and
    ?gbcon were added to scipy.linalg.lapack.
  • The default driver of scipy.linalg.eigh_tridiagonal was improved.
  • scipy.linalg.solve can now estimate the reciprocal condition number and
    the matrix norm calculation is more efficient.

scipy.ndimage improvements

  • A new function scipy.ndimage.vectorized_filter for generic filters that
    take advantage of a vectorized Python callable was added.
  • scipy.ndimage.rotate has improved performance, especially on ARM platforms.

scipy.optimize improvements

  • COBYLA was updated to use the new Python implementation from the
    PRIMApackage.
    The PRIMA implementation fixes many bugs
    in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average
    but it depends on the problem and for some
    problems it can result in more function evaluations or a less optimal
    result. For those cases the user can try modifying the initial and final
    trust region radii given by rhobeg and tol respectively. A larger
    rhobeg can help the algorithm take bigger steps initially, while a
    smaller tol can help it continue and find a better solution.
    For more information, see the PRIMA documentation.
  • Several of the scipy.optimize.minimize methods, and the
    scipy.optimize.least_squares function, have been given a workers
    keyword. This allows parallelization of some calculations via a map-like
    callable, such as multiprocessing.Pool. These parallelization
    opportunities typically occur during numerical differentiation. This can
    greatly speed up minimization when the objective function is expensive to
    calculate.
  • The lm method of scipy.optimize.least_squares can now accept
    3-point and cs for the jac keyword.
  • The SLSQP Fortran 77 code was ported to C. When this method is used now the
    constraint multipliers are exposed to the user through the multiplier
    keyword of the returned scipy.optimize.OptimizeResult object.
  • NNLS code has been corrected and rewritten in C to address the performance
    regression introduced in 1.15.x
  • scipy.optimize.root now warns for invalid inner parameters when using the
    newton_krylov method
  • The return value of minimization with method='L-BFGS-B' now has
    a faster hess_inv.todense() implementation. Time complexity has improved
    from cubic to quadratic.
  • scipy.optimize.least_squares has a new callback argument that is applicable
    to the trf and dogbox methods. callback may be used to track
    optimization results at each step or to provide custom conditions for
    stopping.

scipy.signal improvements

  • A new function scipy.signal.firwin_2d for the creation of a 2-D FIR Filter
    using the 1-D window method was added.
  • scipy.signal.cspline1d_eval and scipy.signal.qspline1d_eval now provide
    an informative error on empty input rather than hitting the recursion limit.
  • A new function scipy.signal.closest_STFT_dual_window to calculate the
    scipy.signal.ShortTimeFFT dual window of a given window closest to a
    desired dual window.
  • A new classmethod scipy.signal.ShortTimeFFT.from_win_equals_dual to
    create a scipy.signal.ShortTimeFFT instance where the window and its dual
    are equal up to a scaling factor. It allows to create short-time Fourier
    transforms which are unitary mappings.
  • The performance of scipy.signal.convolve2d was improved.

scipy.sparse improvements

  • scipy.sparse.coo_array now supports n-D arrays using binary and reduction
    operations.
  • Faster operations between two DIA arrays/matrices for: add, sub, multiply,
    matmul.
  • scipy.sparse.csgraph.dijkstra shortest_path is more efficient.
  • scipy.sparse.csgraph.yen has performance improvements.
  • Support for lazy loading of sparse.csgraph and sparse.linalg was
    added.

scipy.spatial improvements

  • A new class, scipy.spatial.transform.RigidTransform, provides functionality
    to convert between different representations of rigid transforms in 3-D
    space, its application to vectors and transform composition.
    It follows the same design approach as scipy.spatial.transform.Rotation.
  • scipy.spatial.transform.Rotation now has an appropriate __repr__ method,
    and improved performance for its scipy.spatial.transform.Rotation.apply
    method.

scipy.stats improvements

  • A new function scipy.stats.quantile, an array API compatible function for
    quantile estimation, was added.
  • scipy.stats.make_distribution was extended to work with existing discrete
    distributions and to facilitate the creation of custom distributions in the
    new random variable infrastructure.
  • A new distribution, scipy.stats.Binomial, was added.
  • An equal_var keyword was added to scipy.stats.tukey_hsd (enables the
    Games-Howell test) and scipy.stats.f_oneway (enables Welch ANOVA).
  • The moment calculation for scipy.stats.gennorm was improved.
  • The scipy.stats.mode implementation was vectorized, for faster batch
    calculation.
  • Support for axis, nan_policy, and keepdims keywords was added to
    scipy.stats.power_divergence, scipy.stats.chisquare,
    scipy.stats.pointbiserialr, scipy.stats.kendalltau,
    scipy.stats.weightedtau, scipy.stats.theilslopes,
    scipy.stats.siegelslopes, scipy.stats.boxcox_llf, and
    scipy.stats.linregress.
  • Support for keepdims and nan_policy keywords was added to
    scipy.stats.gstd.
  • The performance of scipy.stats.special_ortho_group and scipy.stats.pearsonr
    was improved.
  • Support for an rng keyword argument was added to the logcdf and
    cdf methods of multivariate_normal_gen and multivariate_normal_frozen.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to
multiple submodules in recent versions of SciPy. Please consider testing
these features by setting the environment variable SCIPY_ARRAY_API=1 and
providing PyTorch, JAX, CuPy or Dask arrays as array arguments.

Many functions in scipy.stats, scipy.special, scipy.optimize, and
scipy.constants now provide tables documenting compatible array and device
types as well as support for lazy arrays and JIT compilation. New features with
support and old features with support added for SciPy 1.16.0 include:

  • Most of the scipy.signal functionality
  • scipy.ndimage.vectorized_filter
  • scipy.special.stdtrit
  • scipy.special.softmax
  • scipy.special.log_softmax
  • scipy.stats.quantile
  • scipy.stats.gstd
  • scipy.stats.rankdata

Features with extended array API support (generally, improved support
for JAX and Dask) in SciPy 1.16.0 include:

  • many of the scipy.cluster.hierarchy functions
  • many functions in scipy.special
  • many of the trimmed statistics functions in scipy.stats

SciPy now has a CI job that exercises GPU (CUDA) support, and as a result
using PyTorch, CuPy or JAX arrays on GPU with SciPy is now more reliable.

Deprecated features

  • The unused atol argument of scipy.optimize.nnls is deprecated and will
    be removed in SciPy 1.18.0.
  • The disp argument of scipy.linalg.signm, scipy.linalg.logm, and
    scipy.linalg.sqrtm will be removed in SciPy 1.18.0.
  • scipy.stats.multinomial now emits a FutureWarning if the rows of p
    do not sum to 1.0. This condition will produce NaNs beginning in SciPy
    1.18.0.
  • The disp and iprint arguments of the l-bfgs-b solver of scipy.optimize
    have been deprecated, and will be removed in SciPy 1.18.0.

Expired Deprecations

  • scipy.sparse.conjtransp has been removed. Use .T.conj() instead.
  • The quadrature='trapz' option has been removed from
    scipy.integrate.quad_vec, and scipy.stats.trapz has been removed. Use
    trapezoid in both instances instead.
  • scipy.special.comb and scipy.special.perm now raise when exact=True
    and arguments are non-integral.
  • Support for inference of the two sets of measurements from the single
    argument x has been removed from scipy.stats.linregress. The data
    must be specified separately as x and y.
  • Support for NumPy masked arrays has been removed from
    scipy.stats.power_divergence and scipy.stats.chisquare.
  • A significant number of functions from non-public namespaces
    (e.g., scipy.sparse.base, scipy.interpolate.dfitpack) were cleaned
    up. They were previously already emitting deprecation warnings.

Backwards incompatible changes

  • Several of the scipy.linalg functions for solving a linear system (e.g.
    scipy.linalg.solve) documented that the RHS argument must be either 1-D or
    2-D but did not always raise an error when the RHS argument had more the
    two dimensions. Now, many-dimensional right hand sides are treated according
    to the rules specified in linalg_batch.
  • scipy.stats.bootstrap now explicitly broadcasts elements of data to the
    same shape (ignoring axis) before performing the calculation.
  • Several submodule names are no longer available via from scipy.signal import *,
    but may still be imported directly, as detailed at scipy/scipy-stubs#​549.

Build and packaging related changes

  • The minimum supported version of Clang was bumped from 12.0 to 15.0.
  • The lowest supported macOS version for wheels on PyPI is now 10.14 instead of
    10.13.
  • The sdist contents were optimized, resulting in a size reduction of about 50%,
    from 60 MB to 30 MB.
  • For Cython>=3.1.0, SciPy now uses the new cython --generate-shared
    functionality, which reduces the total size of SciPy's wheels and on-disk
    installations significantly.
  • SciPy no longer contains an internal shared library that requires RPATH support,
    after sf_error_state was removed from scipy.special.
  • A new build option -Duse-system-libraries has been added. It allows
    opting in to using system libraries instead of using vendored sources.
    Currently Boost.Math and Qhull are supported as system build
    dependencies.

Other changes

  • A new accompanying release of scipy-stubs (v1.16.0.0) is
    available at https://github.com/scipy/scipy-stubs/releases/tag/v1.16.0.0
  • The internal dependency of scipy._lib on scipy.sparse was removed,
    which reduces the import time of a number of other SciPy submodules.
  • Support for free-threaded CPython was improved: the last known thread-safety
    issues in scipy.special were fixed, and pytest-run-parallel is now used
    in a CI job to guard against regressions.
  • Support for spin as a developer
    CLI was added, including support for editable installs. The SciPy-specific
    python dev.py CLI will be removed in the next release cycle in favor of
    spin.
  • The vendored Qhull library was upgraded from version 2019.1 to 2020.2.
  • A large amount of the C++ code in scipy.special was moved to the new
    header-only xsf library. That library was
    included back in the SciPy source tree as a git submodule.
  • The namedtuple-like bunch objects returned by some SciPy functions
    now have improved compatibility with the polars library.
  • The output of the rvs method of scipy.stats.wrapcauchy is now mapped to
    the unit circle between 0 and 2 * pi.
  • The lm method of scipy.optimize.least_squares now has a different behavior
    for the maximum number of function evaluations, max_nfev. The default for
    the lm method is changed to 100 * n, for both a callable and a
    numerically estimated jacobian. This limit on function evaluations excludes
    those used for any numerical estimation of the Jacobian. Previously the
    default when using an estimated jacobian was 100 * n * (n + 1), because
    the method included evaluations used in the estimation. In addition, for the
    lm method the number of function calls used in Jacobian approximation
    is no longer included in OptimizeResult.nfev. This brings the behavior
    of lm, trf, and dogbox into line.

Authors

  • Name (commits)
  • h-vetinari (4)
  • aiudirog (1) +
  • Anton Akhmerov (2)
  • Thorsten Alteholz (1) +
  • Gabriel Augusto (1) +
  • Backfisch263 (1) +
  • Nickolai Belakovski (5)
  • Peter Bell (1)
  • Benoît W. (1) +
  • Evandro Bernardes (1)
  • Gauthier Berthomieu (1) +
  • Maxwell Bileschi (1) +
  • Sam Birch (1) +
  • Florian Bourgey (3) +
  • Charles Bousseau (2) +
  • Richard Strong Bowen (2) +
  • Jake Bowhay (127)
  • Matthew Brett (1)
  • Dietrich Brunn (53)
  • Evgeni Burovski (254)
  • Christine P. Chai (12) +
  • Gayatri Chakkithara (1) +
  • Saransh Chopra (2) +
  • Omer Cohen (1) +
  • Lucas Colley (91)
  • Yahya Darman (3) +
  • Benjamin Eisele (1) +
  • Donnie Erb (1)
  • Sagi Ezri (58) +
  • Alexander Fabisch (2) +
  • Matthew H Flamm (1)
  • Karthik Viswanath Ganti (1) +
  • Neil Girdhar (1)
  • Ralf Gommers (162)
  • Rohit Goswami (4)
  • Saarthak Gupta (4) +
  • Matt Haberland (326)
  • Sasha Hafner (1) +
  • Joren Hammudoglu (11)
  • Chengyu Han (1) +
  • Charles Harris (1)
  • Kim Hsieh (4) +
  • Yongcai Huang (2) +
  • Lukas Huber (1) +
  • Yuji Ikeda (2) +
  • Guido Imperiale (105) +
  • Robert Kern (2)
  • Harin Khakhi (2) +
  • Agriya Khetarpal (4)
  • Daniil Kiktenko (1) +
  • Kirill R. (2) +
  • Tetsuo Koyama (1)
  • Jigyasu Krishnan (1) +
  • Abhishek Kumar (2) +
  • Pratham Kumar (3) +
  • David Kun (1) +
  • Eric Larson (3)
  • lciti (1)
  • Antony Lee (1)
  • Kieran Leschinski (1) +
  • Thomas Li (2) +
  • Yuxi Long (2) +
  • Christian Lorentzen (2)
  • Loïc Estève (4)
  • Panos Mavrogiorgos (1) +
  • Nikolay Mayorov (2)
  • Melissa Weber Mendonça (10)
  • Michał Górny (1)
  • Miguel Cárdenas (2) +
  • Swastik Mishra (1) +
  • Sturla Molden (2)
  • Andreas Nazlidis (1) +
  • Andrew Nelson (209)
  • Parth Nobel (1) +
  • Nick ODell (9)
  • Giacomo Petrillo (1)
  • Victor PM (10) +
  • pmav99 (1) +
  • Ilhan Polat (74)
  • Tyler Reddy (128)
  • Érico Nogueira Rolim (1) +
  • Pamphile Roy (10)
  • Mikhail Ryazanov (6)
  • Atsushi Sakai (9)
  • Marco Salathe (1) +
  • sanvi (1) +
  • Neil Schemenauer (2) +
  • Daniel Schmitz (20)
  • Martin Schuck (1) +
  • Dan Schult (33)
  • Tomer Sery (19)
  • Adrian Seyboldt (1) +
  • Scott Shambaugh (4)
  • ShannonS00 (1) +
  • sildater (3) +
  • Param Singh (1) +
  • G Sreeja (7) +
  • Albert Steppi (133)
  • Kai Striega (3)
  • Anushka Suyal (2)
  • Julia Tatz (1) +
  • Tearyt (1) +
  • Elia Tomasi (1) +
  • Jamie Townsend (2) +
  • Edgar Andrés Margffoy Tuay (4)
  • Matthias Urlichs (1) +
  • Mark van Rossum (1) +
  • Jacob Vanderplas (2)
  • David Varela (2) +
  • Christian Veenhuis (3)
  • vfdev (1)
  • Stefan van der Walt (2)
  • Warren Weckesser (5)
  • Jason N. White (1) +
  • windows-server-2003 (5)
  • Zhiqing Xiao (1)
  • Pavadol Yamsiri (1)
  • Rory Yorke (3)
  • Irwin Zaid (4)
  • Austin Zhang (1) +
  • William Zijie Zhang (1) +
  • Zaikun Zhang (1) +
  • Zhenyu Zhu (1) +
  • Eric Zitong Zhou (11) +
  • Case Zumbrum (2) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (45)

A total of 126 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.

Complete issue list, PR list, and release asset hashes are available in the associated README.txt.

v1.15.3

Compare Source

SciPy 1.15.3 Release Notes

SciPy 1.15.3 is a bug-fix release with no new features
compared to 1.15.2.

For the complete issue and PR lists see the raw release notes.

Authors

  • Name (commits)
  • aiudirog (1) +
  • Nickolai Belakovski (1)
  • Florian Bourgey (1) +
  • Richard Strong Bowen (2) +
  • Jake Bowhay (1)
  • Dietrich Brunn (2)
  • Evgeni Burovski (1)
  • Lucas Colley (1)
  • Ralf Gommers (1)
  • Saarthak Gupta (1) +
  • Matt Haberland (4)
  • Chengyu Han (1) +
  • Lukas Huber (1) +
  • Nick ODell (2)
  • Ilhan Polat (4)
  • Tyler Reddy (52)
  • Neil Schemenauer (1) +
  • Dan Schult (1)
  • sildater (1) +
  • Gagandeep Singh (4)
  • Albert Steppi (2)
  • Matthias Urlichs (1) +
  • David Varela (1) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (3)

A total of 24 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.

v1.15.2

Compare Source

SciPy 1.15.2 Release Notes

SciPy 1.15.2 is a bug-fix release with no new features
compared to 1.15.1. Free-threaded Python 3.13 wheels
for Linux ARM platform are available on PyPI starting with
this release.

Authors

  • Name (commits)
  • Peter Bell (1)
  • Charles Bousseau (1) +
  • Jake Bowhay (3)
  • Matthew Brett (1)
  • Ralf Gommers (3)
  • Rohit Goswami (1)
  • Matt Haberland (4)
  • Parth Nobel (1) +
  • Tyler Reddy (33)
  • Daniel Schmitz (2)
  • Dan Schult (5)
  • Scott Shambaugh (2)
  • Edgar Andrés Margffoy Tuay (1)
  • Warren Weckesser (4)

A total of 14 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.

v1.15.1

Compare Source

SciPy 1.15.1 Release Notes

SciPy 1.15.1 is a bug-fix release with no new features
compared to 1.15.0. Importantly, an issue with the
import of scipy.optimize breaking other packages
has been fixed.

Authors

  • Name (commits)
  • Ralf Gommers (3)
  • Rohit Goswami (1)
  • Matt Haberland (2)
  • Tyler Reddy (7)
  • Daniel Schmitz (1)

A total of 5 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.

v1.15.0

Compare Source

SciPy 1.15.0 Release Notes

SciPy 1.15.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.15.x branch, and on adding new features on the main branch.

This release requires Python 3.10-3.13 and NumPy 1.23.5 or greater.

Highlights of this release

  • Sparse arrays are now fully functional for 1-D and 2-D arrays. We recommend
    that all new code use sparse arrays instead of sparse matrices and that
    developers start to migrate their existing code from sparse matrix to sparse
    array: migration_to_sparray. Both sparse.linalg and sparse.csgraph
    work with either sparse matrix or sparse array and work internally with
    sparse array.

  • Sparse arrays now provide basic support for n-D arrays in the COO format
    including add, subtract, reshape, transpose, matmul,
    dot, tensordot and others. More functionality is coming in future
    releases.

  • Preliminary support for free-threaded Python 3.13.

  • New probability distribution features in scipy.stats can be used to improve
    the speed and accuracy of existing continuous distributions and perform new
    probability calculations.

  • Several new features support vectorized calculations with Python Array API
    Standard compatible input (see "Array API Standard Support" below):

    • scipy.differentiate is a new top-level submodule for accurate
      estimation of derivatives of black box functions.
    • scipy.optimize.elementwise contains new functions for root-finding and
      minimization of univariate functions.
    • scipy.integrate offers new functions cubature, tanhsinh, and
      nsum for multivariate integration, univariate integration, and
      univariate series summation, respectively.
  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational
    approximation of real or complex functions.

  • scipy.special adds new functions offering improved Legendre function
    implementations with a more consistent interface.

New features

scipy.differentiate introduction

The new scipy.differentiate sub-package contains functions for accurate
estimation of derivatives of black box functions.

  • Use scipy.differentiate.derivative for first-order derivatives of
    scalar-in, scalar-out functions.
  • Use scipy.differentiate.jacobian for first-order partial derivatives of
    vector-in, vector-out functions.
  • Use scipy.differentiate.hessian for second-order partial derivatives of
    vector-in, scalar-out functions.

All functions use high-order finite difference rules with adaptive (real)
step size. To facilitate batch computation, these functions are vectorized
and support several Array API compatible array libraries in addition to NumPy
(see "Array API Standard Support" below).

scipy.integrate improvements

  • The new scipy.integrate.cubature function supports multidimensional
    integration, and has support for approximating integrals with
    one or more sets of infinite limits.
  • scipy.integrate.tanhsinh is now exposed for public use, allowing
    evaluation of a convergent integral using tanh-sinh quadrature.
  • scipy.integrate.nsum evaluates finite and infinite series and their
    logarithms.
  • scipy.integrate.lebedev_rule computes abscissae and weights for
    integration over the surface of a sphere.
  • The QUADPACK Fortran77 package has been ported to C.

scipy.interpolate improvements

  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational
    approximation of real or complex functions.
  • scipy.interpolate.FloaterHormannInterpolator adds barycentric rational
    interpolation.
  • New functions scipy.interpolate.make_splrep and
    scipy.interpolate.make_splprep implement construction of smoothing splines.
    The algorithmic content is equivalent to FITPACK (splrep and splprep
    functions, and *UnivariateSpline classes) and the user API is consistent
    with make_interp_spline: these functions receive data arrays and return
    a scipy.interpolate.BSpline instance.
  • New generator function scipy.interpolate.generate_knots implements the
    FITPACK strategy for selecting knots of a smoothing spline given the
    smoothness parameter, s. The function exposes the internal logic of knot
    selection that splrep and *UnivariateSpline was using.

scipy.linalg improvements

  • scipy.linalg.interpolative Fortran77 code has been ported to Cython.
  • scipy.linalg.solve supports several new values for the assume_a
    argument, enabling faster computation for diagonal, tri-diagonal, banded, and
    triangular matrices. Also, when assume_a is left unspecified, the
    function now automatically detects and exploits diagonal, tri-diagonal,
    and triangular structures.
  • scipy.linalg matrix creation functions (scipy.linalg.circulant,
    scipy.linalg.companion, scipy.linalg.convolution_matrix,
    scipy.linalg.fiedler, scipy.linalg.fiedler_companion, and
    scipy.linalg.leslie) now support batch
    matrix creation.
  • scipy.linalg.funm is faster.
  • scipy.linalg.orthogonal_procrustes now supports complex input.
  • Wrappers for the following LAPACK routines have been added in
    scipy.linalg.lapack: ?lantr, ?sytrs, ?hetrs, ?trcon,
    and ?gtcon.
  • scipy.linalg.expm was rewritten in C.
  • scipy.linalg.null_space now accepts the new arguments overwrite_a,
    check_finite, and lapack_driver.
  • id_dist Fortran code was rewritten in Cython.

scipy.ndimage improvements

  • Several additional filtering functions now support an axes argument
    that specifies which axes of the input filtering is to be performed on.
    These include correlate, convolve, generic_laplace, laplace,
    gaussian_laplace, derivative2, generic_gradient_magnitude,
    gaussian_gradient_magnitude and generic_filter.
  • The binary and grayscale morphology functions now support an axes
    argument that specifies which axes of the input filtering is to be performed
    on.
  • scipy.ndimage.rank_filter time complexity has improved from n to
    log(n).

scipy.optimize improvements

  • The vendored HiGHS library has been upgraded from 1.4.0 to 1.8.0,
    bringing accuracy and performance improvements to solvers.
  • The MINPACK Fortran77 package has been ported to C.
  • The L-BFGS-B Fortran77 package has been ported to C.
  • The new scipy.optimize.elementwise namespace includes functions
    bracket_root, find_root, bracket_minimum, and find_minimum
    for root-finding and minimization of univariate functions. To facilitate
    batch computation, these functions are vectorized and support several
    Array API compatible array libraries in addition to NumPy (see
    "Array API Standard Support" below). Compared to existing functions (e.g.
    scipy.optimize.root_scalar and scipy.optimize.minimize_scalar),
    these functions can offer speedups of over 100x when used with NumPy arrays,
    and even greater gains are possible with other Array API Standard compatible
    array libraries (e.g. CuPy).
  • scipy.optimize.differential_evolution now supports more general use of
    workers, such as passing a map-like callable.
  • scipy.optimize.nnls was rewritten in Cython.
  • HessianUpdateStrategy now supports __matmul__.

scipy.signal improvements

  • Add functionality of complex-valued waveforms to signal.chirp().
  • scipy.signal.lombscargle has two new arguments, weights and
    floating_mean, enabling sample weighting and removal of an unknown
    y-offset independently for each frequency. Additionally, the normalize
    argument includes a new option to return the complex representation of the
    amplitude and phase.
  • New function scipy.signal.envelope for computation of the envelope of a
    real or complex valued signal.

scipy.sparse improvements

  • A migration guide is now available for
    moving from sparse.matrix to sparse.array in your code/library.
  • Sparse arrays now support indexing for 1-D and 2-D arrays. So, sparse
    arrays are now fully functional for 1-D and 2D.
  • n-D sparse arrays in COO format can now be constructed, reshaped and used
    for basic arithmetic.
  • New functions sparse.linalg.is_sptriangular and
    sparse.linalg.spbandwidth mimic the existing dense tools
    linalg.is_triangular and linalg.bandwidth.
  • sparse.linalg and sparse.csgraph now work with sparse arrays. Be
    careful that your index arrays are 32-bit. We are working on 64bit support.
  • The vendored ARPACK library has been upgraded to version 3.9.1.
  • COO, CSR, CSC and LIL formats now support the axis argument for
    count_nonzero.
  • Sparse arrays and matrices may now raise errors when initialized with
    incompatible data types, such as float16.
  • min, max, argmin, and argmax now support computation
    over nonzero elements only via the new explicit argument.
  • New functions get_index_dtype and safely_cast_index_arrays are
    available to facilitate index array casting in sparse.

scipy.spatial improvements

  • Rotation.concatenate now accepts a bare Rotation object, and will
    return a copy of it.

scipy.special improvements

  • New functions offering improved Legendre function implementations with a
    more consistent interface. See respective docstrings for more information.

    • scipy.special.legendre_p, scipy.special.legendre_p_all
    • scipy.special.assoc_legendre_p, scipy.special.assoc_legendre_p_all
    • scipy.special.sph_harm_y, scipy.special.sph_harm_y_all
    • scipy.special.sph_legendre_p, scipy.special.sph_legendre_p_all,
  • The factorial functions special.{factorial,factorial2,factorialk} now
    offer an extension to the complex domain by passing the kwarg
    extend='complex'. This is opt-in because it changes the values for
    negative inputs (which by default return 0), as well as for some integers
    (in the case of factorial2 and factorialk; for more details,
    check the respective docstrings).

  • scipy.special.zeta now defines the Riemann zeta function on the complex
    plane.

  • scipy.special.softplus computes the softplus function

  • The spherical Bessel functions (scipy.special.spherical_jn,
    scipy.special.spherical_yn, scipy.special.spherical_in, and
    scipy.special.spherical_kn) now support negative arguments with real dtype.

  • scipy.special.logsumexp now preserves precision when one element of the
    sum has magnitude much bigger than the rest.

  • The accuracy of several functions has been improved:

    • scipy.special.ncfdtr, scipy.special.nctdtr, and
      scipy.special.gdtrib have been improved throughout the domain.
    • scipy.special.hyperu is improved for the case of b=1, small x,
      and small a.
    • scipy.special.logit is improved near the argument p=0.5.
    • scipy.special.rel_entr is improved when x/y overflows, underflows,
      or is close to 1.
  • scipy.special.ndtr is now more efficient for sqrt(2)/2 < |x| < 1.

scipy.stats improvements

  • A new probability distribution infrastructure has been added for the
    implementation of univariate, continuous distributions. It has several
    speed, accuracy, memory, and interface advantages compared to the
    previous infrastructure. See rv_infrastructure for a tutorial.

    • Use scipy.stats.make_distribution to treat an existing continuous
      distribution (e.g. scipy.stats.norm) with the new infrastructure.
      This can improve the speed and accuracy of existing distributions,
      especially those with methods not overridden with distribution-specific
      formulas.
    • scipy.stats.Normal and scipy.stats.Uniform are pre-defined classes
      to represent the normal and uniform distributions, respectively.
      Their interfaces may be faster and more convenient than those produced by
      make_distribution.
    • scipy.stats.Mixture can be used to represent mixture distributions.
  • Instances of scipy.stats.Normal, scipy.stats.Uniform, and the classes
    returned by scipy.stats.make_distribution are supported by several new
    mathematical transformations.

    • scipy.stats.truncate for truncation of the support.
    • scipy.stats.order_statistic for the order statistics of a given number
      of IID random variables.
    • scipy.stats.abs, scipy.stats.exp, and scipy.stats.log. For example,
      scipy.stats.abs(Normal()) is distributed according to the folded normal
      and scipy.stats.exp(Normal()) is lognormally distributed.
  • The new scipy.stats.lmoment calculates sample l-moments and l-moment
    ratios. Notably, these sample estimators are unbiased.

  • scipy.stats.chatterjeexi computes the Xi correlation coefficient, which
    can detect nonlinear dependence. The function also performs a hypothesis
    test of independence between samples.

  • scipy.stats.wilcoxon has improved method resolution logic for the default
    method='auto'. Other values of method provided by the user are now
    respected in all cases, and the method argument approx has been
    renamed to asymptotic for consistency with similar functions. (Use of
    approx is still allowed for backward compatibility.)

  • There are several new probability distributions:

    • scipy.stats.dpareto_lognorm represents the double Pareto lognormal
      distribution.
    • scipy.stats.landau represents the Landau distribution.
    • scipy.stats.normal_inverse_gamma represents the normal-inverse-gamma
      distribution.
    • scipy.stats.poisson_binom represents the Poisson binomial distribution.
  • Batch calculation with scipy.stats.alexandergovern and
    scipy.stats.combine_pvalues is faster.

  • scipy.stats.chisquare added an argument sum_check. By default, the
    function raises an error when the sum of expected and obseved frequencies
    are not equal; setting sum_check=False disables this check to
    facilitate hypothesis tests other than Pearson's chi-squared test.

  • The accuracy of several distribution methods has been improved, including:

    • scipy.stats.nct method pdf
    • scipy.stats.crystalball method sf
    • scipy.stats.geom method rvs
    • scipy.stats.cauchy methods logpdf, pdf, ppf and isf
    • The logcdf and/or logsf methods of distributions that do not
      override the generic implementation of these methods, including
      scipy.stats.beta, scipy.stats.betaprime, scipy.stats.cauchy,
      scipy.stats.chi, scipy.stats.chi2, scipy.stats.exponweib,
      scipy.stats.gamma, scipy.stats.gompertz, scipy.stats.halflogistic,
      scipy.stats.hypsecant, scipy.stats.invgamma, scipy.stats.laplace,
      scipy.stats.levy, scipy.stats.loggamma, scipy.stats.maxwell,
      scipy.stats.nakagami, and scipy.stats.t.
  • scipy.stats.qmc.PoissonDisk now accepts lower and upper bounds
    parameters l_bounds and u_bounds.

  • scipy.stats.fisher_exact now supports two-dimensional tables with shapes
    other than (2, 2).

Preliminary Support for Free-Threaded CPython 3.13

SciPy 1.15 has preliminary support for the free-threaded build of CPython
3.13. This allows SciPy functionality to execute in parallel with Python
threads
(see the threading stdlib module). This support was enabled by fixing a
significant number of thread-safety issues in both pure Python and
C/C++/Cython/Fortran extension modules. Wheels are provided on PyPI for this
release; NumPy >=2.1.3 is required at runtime. Note that building for a
free-threaded interpreter requires a recent pre-release or nightly for Cython
3.1.0.

Support for free-threaded Python does not mean that SciPy is fully thread-safe.
Please see scipy_thread_safety for more details.

If you are interested in free-threaded Python, for example because you have a
multiprocessing-based workflow that you are interested in running with Python
threads, we encourage testing and experimentation. If you run into problems
that you suspect are because of SciPy, please open an issue, checking first if
the bug also occurs in the "regular" non-free-threaded CPython 3.13 build.
Many threading bugs can also occur in code that releases the GIL; disabling
the GIL only makes it easier to hit threading bugs.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to
existing sub-packages in recent versions of SciPy. Please consider testing
these features by setting an environment variable SCIPY_ARRAY_API=1 and
providing PyTorch, JAX, ndonnx, or CuPy arrays as array arguments. Features
with support added for SciPy 1.15.0 include:

  • All functions in scipy.differentiate (new sub-package)
  • All functions in scipy.optimize.elementwise (new namespace)
  • scipy.optimize.rosen, scipy.optimize.rosen_der, and
    scipy.optimize.rosen_hess
  • scipy.special.logsumexp
  • scipy.integrate.trapezoid
  • scipy.integrate.tanhsinh (newly public function)
  • scipy.integrate.cubature (new function)
  • scipy.integrate.nsum (new function)
  • scipy.special.chdtr, scipy.special.betainc, and scipy.special.betaincc
  • scipy.stats.boxcox_llf
  • scipy.stats.differential_entropy
  • scipy.stats.zmap, scipy.stats.zscore, and scipy.stats.gzscore
  • scipy.stats.tmean, scipy.stats.tvar, scipy.stats.tstd,
    scipy.stats.tsem, scipy.stats.tmin, and scipy.stats.tmax
  • scipy.stats.gmean, scipy.stats.hmean and scipy.stats.pmean
  • scipy.stats.combine_pvalues
  • scipy.stats.ttest_ind, scipy.stats.ttest_rel
  • scipy.stats.directional_stats
  • scipy.ndimage functions will now delegate to cupyx.scipy.ndimage,
    and for other backends will transit via NumPy arrays on the host.

Deprecated features and future changes

  • Functions scipy.linalg.interpolative.rand and
    scipy.linalg.interpolative.seed have been deprecated and will be removed
    in SciPy 1.17.0.
  • Complex inputs to scipy.spatial.distance.cosine and
    scipy.spatial.distance.correlation have been deprecated and will raise
    an error in SciPy 1.17.0.
  • scipy.spatial.distance.kulczynski1 and
    scipy.spatial.distance.sokalmichener were deprecated and will be removed
    in SciPy 1.17.0.
  • scipy.stats.find_repeats is deprecated and will be
    removed in SciPy 1.17.0. Please use
    numpy.unique/numpy.unique_counts instead.
  • scipy.linalg.kron is deprecated in favour of numpy.kron.
  • Using object arrays and longdouble arrays in scipy.signal
    convolution/correlation functions (scipy.signal.correlate,
    scipy.signal.convolve and scipy.signal.choose_conv_method) and
    filtering functions (scipy.signal.lfilter, scipy.signal.sosfilt) has
    been deprecated and will be removed in SciPy 1.17.0.
  • scipy.stats.linregress has deprecated one-argument use; the two
    variables must be specified as separate arguments.
  • scipy.stats.trapz is deprecated in favor of scipy.stats.trapezoid.
  • scipy.special.lpn is deprecated in favor of scipy.special.legendre_p_all.
  • scipy.special.lpmn and scipy.special.clpmn are deprecated in favor of
    scipy.special.assoc_legendre_p_all.
  • scipy.special.sph_harm has been deprecated in favor of
    scipy.special.sph_harm_y.
  • Multi-dimensional r and c arrays passed to scipy.linalg.toeplitz,
    scipy.linalg.matmul_toeplitz, or scipy.linalg.solve_toeplitz will be
    treated as batches of 1-D coefficients beginning in SciPy 1.17.0.
  • The random_state and permutations arguments of
    scipy.stats.ttest_ind are deprecated. Use method to perform a
    permutation test, instead.

Expired Deprecations

  • The wavelet functions in scipy.signal have been removed. This includes
    daub, qmf, cascade, morlet, morlet2, ricker,
    and cwt. Users should use pywavelets instead.
  • scipy.signal.cmplx_sort has been removed.
  • scipy.integrate.quadrature and scipy.integrate.romberg have been
    removed in favour of scipy.integrate.quad.
  • scipy.stats.rvs_ratio_uniforms has been removed in favor of
    scipy.stats.sampling.RatioUniforms.
  • scipy.special.factorial now raises an error for non-integer scalars when
    exact=True.
  • scipy.integrate.cumulative_trapezoid now raises an error for values of
    initial other than 0 and None.
  • Complex dtypes now raise an error in scipy.interpolate.Akima1DInterpolator
    and scipy.interpolate.PchipInterpolator
  • special.btdtr and special.btdtri have been removed.
  • The default of the exact= kwarg in special.factorialk has changed
    from True to False.
  • All functions in the scipy.misc submodule have been removed.

Backwards incompatible changes

  • interpolate.BSpline.integrate output is now always a numpy array.
    Previously, for 1D splines the output was a python float or a 0D array
    depending on the value of the extrapolate argument.
  • scipy.stats.wilcoxon now respects the method argument provided by the
    user. Previously, even if method='exact' was specified, the function
    would resort to method='approx' in some cases.
  • scipy.integrate.AccuracyWarning has been removed as the functions the
    warning was emitted from (scipy.integrate.quadrature and
    scipy.integrate.romberg) have been removed.

Other changes

  • A separate accompanying type stubs package, scipy-stubs, will be made
    available with the 1.15.0 release. Installation instructions are
    available
    .

  • scipy.stats.bootstrap now emits a FutureWarning if the shapes of the
    input arrays do not agree. Broadcast the arrays to the same batch shape
    (i.e. for all dimensions except those specified by the axis argument)
    to avoid the warning. Broadcasting will be performed automatically in the
    future.

  • SciPy endorsed SPEC-7,
    which proposes a rng argument to control pseudorandom number generation
    (PRNG) in a standard way, replacing legacy arguments like seed and
    random_sate. In many cases, use of rng will change the behavior of
    the function unless the argument is already an instance of
    numpy.random.Generator.

    • Effective in SciPy 1.15.0:

      • The rng argument has been added to the following functions:
        scipy.cluster.vq.kmeans, scipy.cluster.vq.kmeans2,
        scipy.interpolate.BarycentricInterpolator,
        scipy.interpolate.barycentric_interpolate,
        scipy.linalg.clarkson_woodruff_transform,
        scipy.optimize.basinhopping,
        scipy.optimize.differential_evolution, scipy.optimize.dual_annealing,
        scipy.optimize.check_grad, scipy.optimize.quadratic_assignment,
        scipy.sparse.random, scipy.sparse.random_array, scipy.sparse.rand,
        scipy.sparse.linalg.svds, scipy.spatial.transform.Rotation.random,
        scipy.spatial.distance.directed_hausdorff,
        scipy.stats.goodness_of_fit, scipy.stats.BootstrapMethod,
        scipy.stats.PermutationMethod, scipy.stats.bootstrap,
        scipy.stats.permutation_test, scipy.stats.dunnett, all
        scipy.stats.qmc classes that consume random numbers, and
        scipy.stats.sobol_indices.
      • When passed by keyword, the rng argument will follow the SPEC 7
        standard behavior: the argument will be normalized with
        np.random.default_rng before being used.
      • When passed by position or legacy keyword, the behavior of the argument
        will remain unchanged (for now).
    • It is planned that in 1.17.0 the legacy argument will start emitting
      warnings, and that in 1.19.0 the default behavior will change.

    • In all cases, users can avoid future disruption by proactively passing
      an instance of np.random.Generator by keyword rng. For details,
      see SPEC-7.

  • The SciPy build no longer adds -std=legacy for Fortran code,
    except when using Gfortran. This avoids problems with the new Flang and
    AMD Fortran compilers. It may make new build warnings appear for other
    compilers - if so, please file an issue.

  • scipy.signal.sosfreqz has been renamed to scipy.signal.freqz_sos.
    New code should use the new name. The old name is maintained as an alias for
    backwards compatibility.

  • Testing thread-safety improvements related to Python 3.13t have been
    made in: scipy.special, scipy.spatial, scipy.sparse,
    scipy.interpolate.

Authors (commits)

  • endolith (4)
  • h-vetinari (62)
  • a-drenaline (1) +
  • Afleloup (1) +
  • Ahmad Alkadri (1) +
  • Luiz Eduardo Amaral (3) +
  • Virgile Andreani (3)
  • Isaac Alonso Asensio (2) +
  • Matteo Bachetti (1) +
  • Arash Badie-Modiri (1) +
  • Arnaud Baguet (1) +
  • Soutrik Bandyopadhyay (1) +
  • Ankit Barik (1) +
  • Christoph Baumgarten (1)
  • Nickolai Belakovski (3)
  • Krishan Bhasin (1) +
  • Jake Bowhay (89)
  • Michael Bratsch (2) +
  • Matthew Brett (1)
  • Keith Briggs (1) +
  • Olly Britton (145) +
  • Dietrich Brunn (11)
  • Clemens Brunner (1)
  • Evgeni Burovski (185)
  • Matthias Bussonnier (7)
  • CJ Carey (32)
  • Cesar Carrasco (4) +
  • Hood Chatham (1)
  • Aadya Chinubhai (1)
  • Alessandro Chitarrini (1) +
  • Thibault de Coincy (1) +
  • Lucas Colley (217)
  • Martin Diehl (1) +
  • Djip007 (1) +
  • Kevin Doshi (2) +
  • Michael Dunphy (2)
  • Andy Everall (1) +
  • Thomas J. Fan (2)
  • fancidev (60)
  • Sergey Fedorov (2) +
  • Sahil Garje (1) +
  • Gabriel Gerlero (2)
  • Yotam Gingold (1) +
  • Ralf Gommers (111)
  • Rohit Goswami (62)
  • Anil Gurses (1) +
  • Oscar Gustafsson (1) +
  • Matt Haberland (392)
  • Matt Hall (1) +
  • Joren Hammudoglu (6) +
  • CY Han (1) +
  • Daniel Isaac (4) +
  • Maxim Ivanov (1)
  • Jakob Jakobson (2)
  • Janez Demšar (4) +
  • Chris Jerdonek (2) +
  • Adam Jones (4) +
  • Aditi Juneja (1) +
  • Nuri Jung (1) +
  • Guus Kamphuis (1) +
  • Aditya Karumanchi (2) +
  • Robert Kern (5)
  • Agriya Khetarpal (11)
  • Andrew Knyazev (7)
  • Gideon Genadi Kogan (1) +
  • Damien LaRocque (1) +
  • Eric Larson (10)
  • Gregory R. Lee (4)
  • Linfye (1) +
  • Boyu Liu (1) +
  • Drew Allan Loney (1) +
  • Christian Lorentzen (1)
  • Loïc Estève (2)
  • Smit Lunagariya (1)
  • Henry Lunn (1) +
  • Marco Maggi (4)
  • Lauren Main (1) +
  • Martin Spišák (1) +
  • Mateusz Sokół (4)
  • Jan-Kristian Mathisen (1) +
  • Nikolay Mayorov (2)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (62)
  • João Mendes (10)
  • Gian Marco Messa (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Michał Górny (2)
  • Naoto Mizuno (2)
  • Nicolas Mokus (2)
  • musvaage (18) +
  • Andrew Nelson (88)
  • Jens Hedegaard Nielsen (1) +
  • Roman Nigmatullin (8) +
  • Nick ODell (37)
  • Yagiz Olmez (4)
  • Matti Picus (9)
  • Diogo Pires (5) +
  • Ilhan Polat (96)
  • Zachary Potthoff (1) +
  • Tom M. Ragonneau (2)
  • Peter Ralph (1) +
  • Stephan Rave (1) +
  • Tyler Reddy (192)
  • redha2404 (2) +
  • Ritvik1sharma (1) +
  • Érico Nogueira Rolim (1) +
  • Heshy Roskes (1)
  • Pamphile Roy (34)
  • Mikhail Ryazanov (1) +
  • Sina Saber (1) +
  • Atsushi Sakai (1)
  • Clemens Schmid (1) +
  • Daniel Schmitz (17)
  • Moritz Schreiber (1) +
  • Dan Schult (91)
  • Searchingdays (1) +
  • Matias Senger (1) +
  • Scott Shambaugh (1)
  • Zhida Shang (1) +
  • Sheila-nk (4)
  • Romain Simon (2) +
  • Gagandeep Singh (31)
  • Albert Steppi (40)
  • Kai Striega (1)
  • Anushka Suyal (143) +
  • Alex Szatmary (1)
  • Svetlin Tassev (1) +
  • Ewout ter Hoeven (1)
  • Tibor Völcker (4) +
  • Kanishk Tiwari (1) +
  • Yusuke Toyama (1) +
  • Edgar Andrés Margffoy Tuay (124)
  • Adam Turner (2) +
  • Nicole Vadot (1) +
  • Andrew Valentine (1)
  • Christian Veenhuis (2)
  • vfdev (2) +
  • Pauli Virtanen (2)
  • Simon Waldherr (1) +
  • Stefan van der Walt (2)
  • Warren Weckesser (23)
  • Anreas Weh (1)
  • Benoît Wygas (2) +
  • Pavadol Yamsiri (3) +
  • ysard (1) +
  • Xiao Yuan (2)
  • Irwin Zaid (12)
  • Gang Zhao (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (10)

A total of 149 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.

v1.14.1

Compare Source

SciPy 1.14.1 Release Notes

SciPy 1.14.1 adds support for Python 3.13, including binary
wheels on PyPI. Apart from that, it is a bug-fix release with
no new features compared to 1.14.0.

Authors

  • Name (commits)
  • h-vetinari (1)
  • Evgeni Burovski (1)
  • CJ Carey (2)
  • Lucas Colley (3)
  • Ralf Gommers (3)
  • Melissa Weber Mendonça (1)
  • Andrew Nelson (3)
  • Nick ODell (1)
  • Tyler Reddy (36)
  • Daniel Schmitz (1)
  • Dan Schult (4)
  • Albert Steppi (2)
  • Ewout ter Hoeven (1)
  • Tibor Völcker (2) +
  • Adam Turner (1) +
  • Warren Weckesser (2)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (1)

A total of 17 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.

v1.14.0

Compare Source

SciPy 1.14.0 Release Notes

SciPy 1.14.0 is the culmination of 3 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.14.x branch, and on adding new features on the main branch.

This release requires Python 3.10+ and NumPy 1.23.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • SciPy now supports the new Accelerate library introduced in macOS 13.3, and
    has wheels built against Accelerate for macOS >=14 resulting in significant
    performance improvements for many linear algebra operations.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this
    is an interface for COBYQA (Constrained Optimization BY Quadratic
    Approximations), a derivative-free optimization solver, designed to
    supersede COBYLA, developed by the Department of Applied Mathematics, The
    Hong Kong Polytechnic University.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of
    magnitude faster in many cases.

New features

scipy.fft improvements

  • A new function, scipy.fft.prev_fast_len, has been added. This function
    finds the largest composite of FFT radices that is less than the target
    length. It is useful for discarding a minimal number of samples before FFT.

scipy.io improvements

  • wavfile now supports reading and writing of wav files in the RF64
    format, allowing files greater than 4 GB in size to be handled.

scipy.constants improvements

  • Experimental support for the array API standard has been added.

scipy.interpolate improvements

  • scipy.interpolate.Akima1DInterpolator now supports extrapolation via the
    extrapolate argument.

scipy.optimize improvements

  • scipy.optimize.HessianUpdateStrategy now also accepts square arrays for
    init_scale.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this
    is an interface for COBYQA (Constrained Optimization BY Quadratic
    Approximations), a derivative-free optimization solver, designed to
    supersede COBYLA, developed by the Department of Applied Mathematics, The
    Hong Kong Polytechnic University.
  • There are some performance improvements in
    scipy.optimize.differential_evolution.
  • scipy.optimize.approx_fprime now has linear space complexity.

scipy.signal improvements

  • scipy.signal.minimum_phase has a new argument half, allowing the
    provision of a filter of the same length as the linear-phase FIR filter
    coefficients and with the same magnitude spectrum.

scipy.sparse improvements

  • Sparse arrays now support 1D shapes in COO, DOK and CSR formats.
    These are all the formats we currently intend to support 1D shapes.
    Other sparse array formats raise an exception for 1D input.
  • Sparse array methods min/nanmin/argmin and max analogs now return 1D arrays.
    Results are still COO format sparse arrays for min/nanmin and
    dense np.ndarray for argmin.
  • Iterating over csr_array or csc_array yields 1D (CSC) arrays.
  • Sparse matrix and array objects improve their repr and str output.
  • A special case has been added to handle multiplying a dia_array by a
    scalar, which avoids a potentially costly conversion to CSR format.
  • scipy.sparse.csgraph.yen has been added, allowing usage of Yen's K-Shortest
    Paths algorithm on a directed on undirected graph.
  • Addition between DIA-format sparse arrays and matrices is now faster.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of
    magnitude faster in many cases.

scipy.spatial improvements

  • Rotation supports an alternative "scalar-first" convention of quaternion
    component ordering. It is available via the keyword argument scalar_first
    of from_quat and as_quat methods.
  • Some minor performance improvements for inverting of Rotation objects.

scipy.special improvements

  • Added scipy.special.log_wright_bessel, for calculation of the logarithm of
    Wright's Bessel function.
  • The relative error in scipy.special.hyp2f1 calculations has improved
    substantially.
  • Improved behavior of boxcox, inv_boxcox, boxcox1p, and
    inv_boxcox1p by preventing premature overflow.

scipy.stats improvements

  • A new function scipy.stats.power can be used for simulating the power
    of a hypothesis test with respect to a specified alternative.
  • The Irwin-Hall (AKA Uniform Sum) distribution has been added as
    scipy.stats.irwinhall.
  • Exact p-value calculations of scipy.stats.mannwhitneyu are much faster
    and use less memory.
  • scipy.stats.pearsonr now accepts n-D arrays and computes the statistic
    along a specified axis.
  • scipy.stats.kstat, scipy.stats.kstatvar, and scipy.stats.bartlett
    are faster at performing calculations along an axis of a large n-D array.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to
existing sub-packages in recent versions of SciPy. Please consider testing
these features by setting an environment variable SCIPY_ARRAY_API=1 and
providing PyTorch, JAX, or CuPy arrays as array arguments.

As of 1.14.0, there is support for

  • scipy.cluster

  • scipy.fft

  • scipy.constants

  • scipy.special: (select functions)

    • scipy.special.log_ndtr
    • scipy.special.ndtr
    • scipy.special.ndtri
    • scipy.special.erf
    • scipy.special.erfc
    • scipy.special.i0
    • scipy.special.i0e
    • scipy.special.i1
    • scipy.special.i1e
    • scipy.special.gammaln
    • scipy.special.gammainc
    • scipy.special.gammaincc
    • scipy.special.logit
    • scipy.special.expit
    • scipy.special.entr
    • scipy.special.rel_entr
    • scipy.special.xlogy
    • scipy.special.chdtrc
  • scipy.stats: (select functions)

    • scipy.stats.describe
    • scipy.stats.moment
    • scipy.stats.skew
    • scipy.stats.kurtosis
    • scipy.stats.kstat
    • scipy.stats.kstatvar
    • scipy.stats.circmean
    • scipy.stats.circvar
    • scipy.stats.circstd
    • scipy.stats.entropy
    • scipy.stats.variation
    • scipy.stats.sem
    • scipy.stats.ttest_1samp
    • scipy.stats.pearsonr
    • scipy.stats.chisquare
    • scipy.stats.skewtest
    • scipy.stats.kurtosistest
    • scipy.stats.normaltest
    • scipy.stats.jarque_bera
    • scipy.stats.bartlett
    • scipy.stats.power_divergence
    • scipy.stats.monte_carlo_test

Deprecated features

  • scipy.stats.gstd, scipy.stats.chisquare, and
    scipy.stats.power_divergence have deprecated support for masked array
    input.
  • scipy.stats.linregress has deprecated support for specifying both samples
    in one argument; x and y are to be provided as separate arguments.
  • The conjtransp method for scipy.sparse.dok_array and
    scipy.sparse.dok_matrix has been deprecated and will be removed in SciPy
    1.16.0.
  • The option quadrature="trapz" in scipy.integrate.quad_vec has been
    deprecated in favour of quadrature="trapezoid" and will be removed in
    SciPy 1.16.0.
  • scipy.special.{comb,perm} have deprecated support for use of exact=True in
    conjunction with non-integral N and/or k.

Backwards incompatible changes

  • Many scipy.stats functions now produce a standardized warning message when
    an input sample is too small (e.g. zero size). Previously, these functions
    may have raised an error, emitted one or more less informative warnings, or
    emitted no warnings. In most cases, returned results are unchanged; in almost
    all cases the correct result is NaN.

Expired deprecations

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

  • Several previously deprecated methods for sparse arrays were removed:
    asfptype, getrow, getcol, get_shape, getmaxprint,
    set_shape, getnnz, and getformat. Additionally, the .A and
    .H attributes were removed.

  • scipy.integrate.{simps,trapz,cumtrapz} have been removed in favour of
    simpson, trapezoid, and cumulative_trapezoid.

  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr} has been removed in favour of rtol.
    Furthermore, the default value of atol for these functions has changed
    to 0.0.

  • The restrt argument of scipy.sparse.linalg.gmres has been removed in
    favour of restart.

  • The initial_lexsort argument of scipy.stats.kendalltau has been
    removed.

  • The cond and rcond arguments of scipy.linalg.pinv have been
    removed.

  • The even argument of scipy.integrate.simpson has been removed.

  • The turbo and eigvals arguments from scipy.linalg.{eigh,eigvalsh}
    have been removed.

  • The legacy argument of scipy.special.comb has been removed.

  • The hz/nyq argument of signal.{firls, firwin, firwin2, remez} has
    been removed.

  • Objects that weren't part of the public interface but were accessible through
    deprecated submodules have been removed.

  • float128, float96, and object arrays now raise an error in
    scipy.signal.medfilt and scipy.signal.order_filter.

  • scipy.interpolate.interp2d has been replaced by an empty stub (to be
    removed completely in the future).

  • Coinciding with changes to function signatures (e.g. removal of a deprecated
    keyword), we had deprecated positional use of keyword arguments for the
    affected functions, which will now raise an error. Affected functions are:

    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • stats.kendalltau
    • linalg.pinv
    • integrate.simpson
    • linalg.{eigh,eigvalsh}
    • special.comb
    • signal.{firls, firwin, firwin2, remez}

Other changes

  • SciPy now uses C17 as the C standard to build with, instead of C99. The C++
    standard remains C++17.
  • macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported.
    This results in significant performance improvements for linear algebra
    operations, as well as smaller binary wheels.
  • Cross-compilation should be smoother and QEMU or similar is no longer needed
    to run the cross interpreter.
  • Experimental array API support for the JAX backend has been added to several
    parts of SciPy.

Authors

  • Name (commits)
  • h-vetinari (34)
  • Steven Adams (1) +
  • Max Aehle (1) +
  • Ataf Fazledin Ahamed (2) +
  • Luiz Eduardo Amaral (1) +
  • Trinh Quoc Anh (1) +
  • Miguel A. Batalla (7) +
  • Tim Beyer (1) +
  • Andrea Blengino (1) +
  • boatwrong (1)
  • Jake Bowhay (51)
  • Dietrich Brunn (2)
  • Evgeni Burovski (177)
  • Tim Butters (7) +
  • CJ Carey (5)
  • Sean Cheah (46)
  • Lucas Colley (73)
  • Giuseppe "Peppe" Dilillo (1) +
  • DWesl (2)
  • Pieter Eendebak (5)
  • Kenji S Emerson (1) +
  • Jonas Eschle (1)
  • fancidev (2)
  • Anthony Frazier (1) +
  • Ilan Gold (1) +
  • Ralf Gommers (125)
  • Rohit Goswami (28)
  • Ben Greiner (1) +
  • Lorenzo Gualniera (1) +
  • Matt Haberland (260)
  • Shawn Hsu (1) +
  • Budjen Jovan (3) +
  • Jozsef Kutas (1)
  • Eric Larson (3)
  • Gregory R. Lee (4)
  • Philip Loche (1) +
  • Christian Lorentzen (5)
  • Sijo Valayakkad Manikandan (2) +
  • marinelay (2) +
  • Nikolay Mayorov (1)
  • Nicholas McKibben (2)
  • Melissa Weber Mendonça (7)
  • João Mendes (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Tomiță Militaru (2) +
  • Andrew Nelson (35)
  • Lysandros Nikolaou (1)
  • Nick ODell (5) +
  • Jacob Ogle (1) +
  • Pearu Peterson (1)
  • Matti Picus (5)
  • Ilhan Polat (9)
  • pwcnorthrop (3) +
  • Bharat Raghunathan (1)
  • Tom M. Ragonneau (2) +
  • Tyler Reddy (101)
  • Pamphile Roy (18)
  • Atsushi Sakai (9)
  • Daniel Schmitz (5)
  • Julien Schueller (2) +
  • Dan Schult (13)
  • Tomer Sery (7)
  • Scott Shambaugh (4)
  • Tuhin Sharma (1) +
  • Sheila-nk (4)
  • Skylake (1) +
  • Albert Steppi (215)
  • Kai Striega (6)
  • Zhibing Sun (2) +
  • Nimish Telang (1) +
  • toofooboo (1) +
  • tpl2go (1) +
  • Edgar Andrés Margffoy Tuay (44)
  • Andrew Valentine (1)
  • Valerix (1) +
  • Christian Veenhuis (1)
  • void (2) +
  • Warren Weckesser (3)
  • Xuefeng Xu (1)
  • Rory Yorke (1)
  • Xiao Yuan (1)
  • Irwin Zaid (35)
  • Elmar Zander (1) +
  • Zaikun ZHANG (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (4) +

A total of 85 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.

v1.13.1

Compare Source

SciPy 1.13.1 Release Notes

SciPy 1.13.1 is a bug-fix release with no new features
compared to 1.13.0. The version of OpenBLAS shipped with
the PyPI binaries has been increased to 0.3.27.

Authors

  • Name (commits)
  • h-vetinari (1)
  • Jake Bowhay (2)
  • Evgeni Burovski (6)
  • Sean Cheah (2)
  • Lucas Colley (2)
  • DWesl (2)
  • Ralf Gommers (7)
  • Ben Greiner (1) +
  • Matt Haberland (2)
  • Gregory R. Lee (1)
  • Philip Loche (1) +
  • Sijo Valayakkad Manikandan (1) +
  • Matti Picus (1)
  • Tyler Reddy (62)
  • Atsushi Sakai (1)
  • Daniel Schmitz (2)
  • Dan Schult (3)
  • Scott Shambaugh (2)
  • Edgar Andrés Margffoy Tuay (1)

A total of 19 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.

v1.13.0

Compare Source

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,
    :math:\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.

v1.12.0

Compare Source

SciPy 1.12.0 Release Notes

SciPy 1.12.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.12.x branch, and on adding new features on the main branch.

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

  • Experimental support for the array API standard has been added to part of
    scipy.special, and to all of scipy.fft and scipy.cluster. There are
    likely to be bugs and early feedback for usage with CuPy arrays, PyTorch
    tensors, and other array API compatible libraries is appreciated. Use the
    SCIPY_ARRAY_API environment variable for testing.
  • A new class, ShortTimeFFT, provides a more versatile implementation of the
    short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-)
    spectrogram. It utilizes an improved algorithm for calculating the ISTFT.
  • Several new constructors have been added for sparse arrays, and many operations
    now additionally support sparse arrays, further facilitating the migration
    from sparse matrices.
  • A large portion of the scipy.stats API now has improved support for handling
    NaN values, masked arrays, and more fine-grained shape-handling. The
    accuracy and performance of a number of stats methods have been improved,
    and a number of new statistical tests and distributions have been added.

New features

scipy.cluster improvements

  • Experimental support added for the array API standard; PyTorch tensors,
    CuPy arrays and array API compatible array libraries are now accepted
    (GPU support is limited to functions with pure Python implementations).
    CPU arrays which can be converted to and from NumPy are supported
    module-wide and returned arrays will match the input type.
    This behaviour is enabled by setting the SCIPY_ARRAY_API environment
    variable before importing scipy. This experimental support is still
    under development and likely to contain bugs - testing is very welcome.

scipy.fft improvements

  • Experimental support added for the array API standard; functions which are
    part of the fft array API standard extension module, as well as the
    Fast Hankel Transforms and the basic FFTs which are not in the extension
    module, now accept PyTorch tensors, CuPy arrays and array API compatible
    array libraries. CPU arrays which can be converted to and from NumPy arrays
    are supported module-wide and returned arrays will match the input type.
    This behaviour is enabled by setting the SCIPY_ARRAY_API environment
    variable before importing scipy. This experimental support is still under
    development and likely to contain bugs - testing is very welcome.

scipy.integrate improvements

  • Added scipy.integrate.cumulative_simpson for cumulative quadrature
    from sampled data using Simpson's 1/3 rule.

scipy.interpolate improvements

  • New class NdBSpline represents tensor-product splines in N dimensions.
    This class only knows how to evaluate a tensor product given coefficients
    and knot vectors. This way it generalizes BSpline for 1D data to N-D, and
    parallels NdPPoly (which represents N-D tensor product polynomials).
    Evaluations exploit the localized nature of b-splines.
  • NearestNDInterpolator.__call__ accepts **query_options, which are
    passed through to the KDTree.query call to find nearest neighbors. This
    allows, for instance, to limit the neighbor search distance and parallelize
    the query using the workers keyword.
  • BarycentricInterpolator now allows computing the derivatives.
  • It is now possible to change interpolation values in an existing
    CloughTocher2DInterpolator instance, while also saving the barycentric
    coordinates of interpolation points.

scipy.linalg improvements

  • Access to new low-level LAPACK functions is provided via dtgsyl and
    stgsyl.

scipy.optimize improvements

  • scipy.optimize.isotonic_regression has been added to allow nonparametric isotonic
    regression.
  • scipy.optimize.nnls is rewritten in Python and now implements the so-called
    fnnls or fast nnls, making it more efficient for high-dimensional problems.
  • The result object of scipy.optimize.root and scipy.optimize.root_scalar
    now reports the method used.
  • The callback method of scipy.optimize.differential_evolution can now be
    passed more detailed information via the intermediate_results keyword
    parameter. Also, the evolution strategy now accepts a callable for
    additional customization. The performance of differential_evolution has
    also been improved.
  • scipy.optimize.minimize method Newton-CG now supports functions that
    return sparse Hessian matrices/arrays for the hess parameter and is slightly
    more efficient.
  • scipy.optimize.minimize method BFGS now accepts an initial estimate for the
    inverse of the Hessian, which allows for more efficient workflows in some
    circumstances. The new parameter is hess_inv0.
  • scipy.optimize.minimize methods CG, Newton-CG, and BFGS now accept
    parameters c1 and c2, allowing specification of the Armijo and curvature rule
    parameters, respectively.
  • scipy.optimize.curve_fit performance has improved due to more efficient memoization
    of the callable function.

scipy.signal improvements

  • freqz, freqz_zpk, and group_delay are now more accurate
    when fs has a default value.
  • The new class ShortTimeFFT provides a more versatile implementation of the
    short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-)
    spectrogram. It utilizes an improved algorithm for calculating the ISTFT based on
    dual windows and provides more fine-grained control of the parametrization especially
    in regard to scaling and phase-shift. Functionality was implemented to ease
    working with signal and STFT chunks. A section has been added to the "SciPy User Guide"
    providing algorithmic details. The functions stft, istft and spectrogram
    have been marked as legacy.

scipy.sparse improvements

  • sparse.linalg iterative solvers sparse.linalg.cg,
    sparse.linalg.cgs, sparse.linalg.bicg, sparse.linalg.bicgstab,
    sparse.linalg.gmres, and sparse.linalg.qmr are rewritten in Python.
  • Updated vendored SuperLU version to 6.0.1, along with a few additional
    fixes.
  • Sparse arrays have gained additional constructors: eye_array,
    random_array, block_array, and identity. kron and kronsum
    have been adjusted to additionally support operation on sparse arrays.
  • Sparse matrices now support a transpose with axes=(1, 0), to mirror
    the .T method.
  • LaplacianNd now allows selection of the largest subset of eigenvalues,
    and additionally now supports retrieval of the corresponding eigenvectors.
    The performance of LaplacianNd has also been improved.
  • The performance of dok_matrix and dok_array has been improved,
    and their inheritance behavior should be more robust.
  • hstack, vstack, and block_diag now work with sparse arrays, and
    preserve the input sparse type.
  • A new function, scipy.sparse.linalg.matrix_power, has been added, allowing
    for exponentiation of sparse arrays.

scipy.spatial improvements

  • Two new methods were implemented for spatial.transform.Rotation:
    __pow__ to raise a rotation to integer or fractional power and
    approx_equal to check if two rotations are approximately equal.
  • The method Rotation.align_vectors was extended to solve a constrained
    alignment problem where two vectors are required to be aligned precisely.
    Also when given a single pair of vectors, the algorithm now returns the
    rotation with minimal magnitude, which can be considered as a minor
    backward incompatible change.
  • A new representation for spatial.transform.Rotation called Davenport
    angles is available through from_davenport and as_davenport methods.
  • Performance improvements have been added to distance.hamming and
    distance.correlation.
  • Improved performance of SphericalVoronoi sort_vertices_of_regions
    and two dimensional area calculations.

scipy.special improvements

  • Added scipy.special.stirling2 for computation of Stirling numbers of the
    second kind. Both exact calculation and an asymptotic approximation
    (the default) are supported via exact=True and exact=False (the
    default) respectively.
  • Added scipy.special.betaincc for computation of the complementary
    incomplete Beta function and scipy.special.betainccinv for computation of
    its inverse.
  • Improved precision of scipy.special.betainc and scipy.special.betaincinv.
  • Experimental support added for alternative backends: functions
    scipy.special.log_ndtr, scipy.special.ndtr, scipy.special.ndtri,
    scipy.special.erf, scipy.special.erfc, scipy.special.i0,
    scipy.special.i0e, scipy.special.i1, scipy.special.i1e,
    scipy.special.gammaln, scipy.special.gammainc, scipy.special.gammaincc,
    scipy.special.logit, and scipy.special.expit now accept PyTorch tensors
    and CuPy arrays. These features are still under development and likely to
    contain bugs, so they are disabled by default; enable them by setting a
    SCIPY_ARRAY_API environment variable to 1 before importing scipy.
    Testing is appreciated!

scipy.stats improvements

  • Added scipy.stats.quantile_test, a nonparametric test of whether a
    hypothesized value is the quantile associated with a specified probability.
    The confidence_interval method of the result object gives a confidence
    interval of the quantile.
  • scipy.stats.sampling.FastGeneratorInversion provides a convenient
    interface to fast random sampling via numerical inversion of distribution
    CDFs.
  • scipy.stats.geometric_discrepancy adds geometric/topological discrepancy
    metrics for random samples.
  • scipy.stats.multivariate_normal now has a fit method for fitting
    distribution parameters to data via maximum likelihood estimation.
  • scipy.stats.bws_test performs the Baumgartner-Weiss-Schindler test of
    whether two-samples were drawn from the same distribution.
  • scipy.stats.jf_skew_t implements the Jones and Faddy skew-t distribution.
  • scipy.stats.anderson_ksamp now supports a permutation version of the test
    using the method parameter.
  • The fit methods of scipy.stats.halfcauchy, scipy.stats.halflogistic, and
    scipy.stats.halfnorm are faster and more accurate.
  • scipy.stats.beta entropy accuracy has been improved for extreme values of
    distribution parameters.
  • The accuracy of sf and/or isf methods have been improved for
    several distributions: scipy.stats.burr, scipy.stats.hypsecant,
    scipy.stats.kappa3, scipy.stats.loglaplace, scipy.stats.lognorm,
    scipy.stats.lomax, scipy.stats.pearson3, scipy.stats.rdist, and
    scipy.stats.pareto.
  • The following functions now support parameters axis, nan_policy, and
    keep_dims: scipy.stats.entropy, scipy.stats.differential_entropy,
    scipy.stats.variation, scipy.stats.ansari, scipy.stats.bartlett,
    scipy.stats.levene, scipy.stats.fligner, scipy.stats.circmean,
    scipy.stats.circvar, scipy.stats.circstd, scipy.stats.tmean,
    scipy.stats.tvar, scipy.stats.tstd, scipy.stats.tmin, scipy.stats.tmax,
    and scipy.stats.tsem.
  • The logpdf and fit methods of scipy.stats.skewnorm have been improved.
  • The beta negative binomial distribution is implemented as scipy.stats.betanbinom.
  • Improved performance of scipy.stats.invwishart rvs and logpdf.
  • A source of intermediate overflow in scipy.stats.boxcox_normmax with
    method='mle' has been eliminated, and the returned value of lmbda is
    constrained such that the transformed data will not overflow.
  • scipy.stats.nakagami stats is more accurate and reliable.
  • A source of intermediate overflow in scipy.norminvgauss.pdf has been eliminated.
  • Added support for masked arrays to scipy.stats.circmean, scipy.stats.circvar,
    scipy.stats.circstd, and scipy.stats.entropy.
  • scipy.stats.dirichlet has gained a new covariance (cov) method.
  • Improved accuracy of entropy method of scipy.stats.multivariate_t for large
    degrees of freedom.
  • scipy.stats.loggamma has an improved entropy method.

Deprecated features

  • Error messages have been made clearer for objects that don't exist in the
    public namespace and warnings sharpened for private attributes that are not
    supposed to be imported at all.

  • scipy.signal.cmplx_sort has been deprecated and will be removed in
    SciPy 1.15. A replacement you can use is provided in the deprecation message.

  • Values the the argument initial of scipy.integrate.cumulative_trapezoid
    other than 0 and None are now deprecated.

  • scipy.stats.rvs_ratio_uniforms is deprecated in favour of
    scipy.stats.sampling.RatioUniforms

  • scipy.integrate.quadrature and scipy.integrate.romberg have been
    deprecated due to accuracy issues and interface shortcomings. They will
    be removed in SciPy 1.15. Please use scipy.integrate.quad instead.

  • Coinciding with upcoming changes to function signatures (e.g. removal of a
    deprecated keyword), we are deprecating positional use of keyword arguments
    for the affected functions, which will raise an error starting with
    SciPy 1.14. In some cases, this has delayed the originally announced
    removal date, to give time to respond to the second part of the deprecation.
    Affected functions are:

    • linalg.{eigh, eigvalsh, pinv}
    • integrate.simpson
    • signal.{firls, firwin, firwin2, remez}
    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • special.comb
    • stats.kendalltau
  • All wavelet functions have been deprecated, as PyWavelets provides suitable
    implementations; affected functions are: signal.{daub, qmf, cascade, morlet, morlet2, ricker, cwt}

  • scipy.integrate.trapz, scipy.integrate.cumtrapz, and scipy.integrate.simps have
    been deprecated in favour of scipy.integrate.trapezoid, scipy.integrate.cumulative_trapezoid,
    and scipy.integrate.simpson respectively and will be removed in SciPy 1.14.

  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk,gmres,lgmres,minres,qmr,tfqmr}
    is now deprecated in favour of rtol and will be removed in SciPy 1.14.
    Furthermore, the default value of atol for these functions is due
    to change to 0.0 in SciPy 1.14.

Expired Deprecations

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

  • The centered keyword of scipy.stats.qmc.LatinHypercube has been removed.
    Use scrambled=False instead of centered=True.
  • scipy.stats.binom_test has been removed in favour of scipy.stats.binomtest.
  • In scipy.stats.iqr, the use of scale='raw' has been removed in favour
    of scale=1.
  • 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.

Backwards incompatible changes

Other changes

  • The arguments used to compile and link SciPy are now available via
    show_config.

Authors

  • Name (commits)
  • endolith (1)
  • h-vetinari (34)
  • Tom Adamczewski (3) +
  • Anudeep Adiraju (1) +
  • akeemlh (1)
  • Alex Amadori (2) +
  • Raja Yashwanth Avantsa (2) +
  • Seth Axen (1) +
  • Ross Barnowski (1)
  • Dan Barzilay (1) +
  • Ashish Bastola (1) +
  • Christoph Baumgarten (2)
  • Ben Beasley (3) +
  • Doron Behar (1)
  • Peter Bell (1)
  • Sebastian Berg (1)
  • Ben Boeckel (1) +
  • David Boetius (1) +
  • Matt Borland (1)
  • Jake Bowhay (103)
  • Larry Bradley (1) +
  • Dietrich Brunn (5)
  • Evgeni Burovski (102)
  • Matthias Bussonnier (18)
  • CJ Carey (6)
  • Colin Carroll (1) +
  • Aadya Chinubhai (1) +
  • Luca Citi (1)
  • Lucas Colley (141) +
  • com3dian (1) +
  • Anirudh Dagar (4)
  • Danni (1) +
  • Dieter Werthmüller (1)
  • John Doe (2) +
  • Philippe DONNAT (2) +
  • drestebon (1) +
  • Thomas Duvernay (1)
  • elbarso (1) +
  • emilfrost (2) +
  • Paul Estano (8) +
  • Evandro (2)
  • Franz Király (1) +
  • Nikita Furin (1) +
  • gabrielthomsen (1) +
  • Lukas Geiger (9) +
  • Artem Glebov (22) +
  • Caden Gobat (1)
  • Ralf Gommers (127)
  • Alexander Goscinski (2) +
  • Rohit Goswami (2) +
  • Olivier Grisel (1)
  • Matt Haberland (244)
  • Charles Harris (1)
  • harshilkamdar (1) +
  • Alon Hovav (2) +
  • Gert-Ludwig Ingold (1)
  • Romain Jacob (1) +
  • jcwhitehead (1) +
  • Julien Jerphanion (13)
  • He Jia (1)
  • JohnWT (1) +
  • jokasimr (1) +
  • Evan W Jones (1)
  • Karen Róbertsdóttir (1) +
  • Ganesh Kathiresan (1)
  • Robert Kern (11)
  • Andrew Knyazev (4)
  • Uwe L. Korn (1) +
  • Rishi Kulkarni (1)
  • Kale Kundert (3) +
  • Jozsef Kutas (2)
  • Kyle0 (2) +
  • Robert Langefeld (1) +
  • Jeffrey Larson (1) +
  • Jessy Lauer (1) +
  • lciti (1) +
  • Hoang Le (1) +
  • Antony Lee (5)
  • Thilo Leitzbach (4) +
  • LemonBoy (2) +
  • Ellie Litwack (8) +
  • Thomas Loke (4) +
  • Malte Londschien (1) +
  • Christian Lorentzen (6)
  • Adam Lugowski (10) +
  • lutefiskhotdish (1)
  • mainak33 (1) +
  • Ben Mares (11) +
  • mart-mihkel (2) +
  • Mateusz Sokół (24) +
  • Nikolay Mayorov (4)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (7)
  • Michał Górny (1)
  • Kat Mistberg (2) +
  • mkiffer (1) +
  • mocquin (1) +
  • Nicolas Mokus (2) +
  • Sturla Molden (1)
  • Roberto Pastor Muela (3) +
  • Bijay Nayak (1) +
  • Andrew Nelson (105)
  • Praveer Nidamaluri (3) +
  • Lysandros Nikolaou (2)
  • Dimitri Papadopoulos Orfanos (7)
  • Pablo Rodríguez Pérez (1) +
  • Dimitri Papadopoulos (2)
  • Tirth Patel (14)
  • Kyle Paterson (1) +
  • Paul (4) +
  • Yann Pellegrini (2) +
  • Matti Picus (4)
  • Ilhan Polat (36)
  • Pranav (1) +
  • Bharat Raghunathan (1)
  • Chris Rapson (1) +
  • Matteo Raso (4)
  • Tyler Reddy (215)
  • Martin Reinecke (1)
  • Tilo Reneau-Cardoso (1) +
  • resting-dove (2) +
  • Simon Segerblom Rex (4)
  • Lucas Roberts (2)
  • Pamphile Roy (31)
  • Feras Saad (3) +
  • Atsushi Sakai (3)
  • Masahiro Sakai (2) +
  • Omar Salman (14)
  • Andrej Savikin (1) +
  • Daniel Schmitz (55)
  • Dan Schult (19)
  • Scott Shambaugh (9)
  • Sheila-nk (2) +
  • Mauro Silberberg (3) +
  • Maciej Skorski (1) +
  • Laurent Sorber (1) +
  • Albert Steppi (28)
  • Kai Striega (1)
  • Saswat Susmoy (1) +
  • Alex Szatmary (1) +
  • Søren Fuglede Jørgensen (3)
  • othmane tamri (3) +
  • Ewout ter Hoeven (1)
  • Will Tirone (1)
  • TLeitzbach (1) +
  • Kevin Topolski (1) +
  • Edgar Andrés Margffoy Tuay (1)
  • Dipansh Uikey (1) +
  • Matus Valo (3)
  • Christian Veenhuis (2)
  • Nicolas Vetsch (1) +
  • Isaac Virshup (7)
  • Hielke Walinga (2) +
  • Stefan van der Walt (2)
  • Warren Weckesser (7)
  • Bernhard M. Wiedemann (4)
  • Levi John Wolf (1)
  • Xuefeng Xu (4) +
  • Rory Yorke (2)
  • YoussefAli1 (1) +
  • Irwin Zaid (4) +
  • Jinzhe Zeng (1) +
  • JIMMY ZHAO (1) +

A total of 163 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.

v1.11.4

Compare Source

SciPy 1.11.4 Release Notes

SciPy 1.11.4 is a bug-fix release with no new features
compared to 1.11.3.

Authors

  • Name (commits)
  • Jake Bowhay (2)
  • Ralf Gommers (4)
  • Julien Jerphanion (2)
  • Nikolay Mayorov (2)
  • Melissa Weber Mendonça (1)
  • Tirth Patel (1)
  • Tyler Reddy (22)
  • Dan Schult (3)
  • Nicolas Vetsch (1) +

A total of 9 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.

v1.11.3

Compare Source

SciPy 1.11.3 Release Notes

SciPy 1.11.3 is a bug-fix release with no new features
compared to 1.11.2.

Authors

  • Name (commits)
  • Jake Bowhay (2)
  • CJ Carey (1)
  • Colin Carroll (1) +
  • Anirudh Dagar (2)
  • drestebon (1) +
  • Ralf Gommers (5)
  • Matt Haberland (2)
  • Julien Jerphanion (1)
  • Uwe L. Korn (1) +
  • Ellie Litwack (2)
  • Andrew Nelson (5)
  • Bharat Raghunathan (1)
  • Tyler Reddy (37)
  • Søren Fuglede Jørgensen (2)
  • Hielke Walinga (1) +
  • Warren Weckesser (1)
  • Bernhard M. Wiedemann (1)

A total of 17 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.

v1.11.2

Compare Source

SciPy 1.11.2 Release Notes

SciPy 1.11.2 is a bug-fix release with no new features
compared to 1.11.1. Python 3.12 and musllinux wheels
are provided with this release.

Authors

  • Name (commits)
  • Evgeni Burovski (2)
  • CJ Carey (3)
  • Dieter Werthmüller (1)
  • elbarso (1) +
  • Ralf Gommers (2)
  • Matt Haberland (1)
  • jokasimr (1) +
  • Thilo Leitzbach (1) +
  • LemonBoy (1) +
  • Ellie Litwack (2) +
  • Sturla Molden (1)
  • Andrew Nelson (5)
  • Tyler Reddy (39)
  • Daniel Schmitz (6)
  • Dan Schult (2)
  • Albert Steppi (1)
  • Matus Valo (1)
  • Stefan van der Walt (1)

A total of 18 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.

v1.11.1

Compare Source

SciPy 1.11.1 Release Notes

SciPy 1.11.1 is a bug-fix release with no new features
compared to 1.11.0. In particular, a licensing issue
discovered after the release of 1.11.0 has been addressed.

Authors

  • Name (commits)
  • h-vetinari (1)
  • Robert Kern (1)
  • Ilhan Polat (4)
  • Tyler Reddy (8)

A total of 4 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.

v1.11.0

Compare Source

SciPy 1.11.0 Release Notes

SciPy 1.11.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.11.x branch, and on adding new features on the main branch.

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

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Several scipy.sparse array API improvements, including sparse.sparray, a new
    public base class distinct from the older sparse.spmatrix class,
    proper 64-bit index support, and numerous deprecations paving the way to a
    modern sparse array experience.
  • scipy.stats added tools for survival analysis, multiple hypothesis testing,
    sensitivity analysis, and working with censored data.
  • A new function was added for quasi-Monte Carlo integration, and linear
    algebra functions det and lu now accept nD-arrays.
  • An axes argument was added broadly to ndimage functions, facilitating
    analysis of stacked image data.

New features

scipy.integrate improvements

  • Added scipy.integrate.qmc_quad for quasi-Monte Carlo integration.
  • For an even number of points, scipy.integrate.simpson now calculates
    a parabolic segment over the last three points which gives improved
    accuracy over the previous implementation.

scipy.cluster improvements

  • disjoint_set has a new method subset_size for providing the size
    of a particular subset.

scipy.constants improvements

  • The quetta, ronna, ronto, and quecto SI prefixes were added.

scipy.linalg improvements

  • scipy.linalg.det is improved and now accepts nD-arrays.
  • scipy.linalg.lu is improved and now accepts nD-arrays. With the new
    p_indices switch the output permutation argument can be 1D (n,)
    permutation index instead of the full (n, n) array.

scipy.ndimage improvements

  • axes argument was added to rank_filter, percentile_filter,
    median_filter, uniform_filter, minimum_filter,
    maximum_filter, and gaussian_filter, which can be useful for
    processing stacks of image data.

scipy.optimize improvements

  • scipy.optimize.linprog now passes unrecognized options directly to HiGHS.
  • scipy.optimize.root_scalar now uses Newton's method to be used without
    providing fprime and the secant method to be used without a second
    guess.
  • scipy.optimize.lsq_linear now accepts bounds arguments of type
    scipy.optimize.Bounds.
  • scipy.optimize.minimize method='cobyla' now supports simple bound
    constraints.
  • Users can opt into a new callback interface for most methods of
    scipy.optimize.minimize: If the provided callback callable accepts
    a single keyword argument, intermediate_result, scipy.optimize.minimize
    now passes both the current solution and the optimal value of the objective
    function to the callback as an instance of scipy.optimize.OptimizeResult.
    It also allows the user to terminate optimization by raising a
    StopIteration exception from the callback function.
    scipy.optimize.minimize will return normally, and the latest solution
    information is provided in the result object.
  • scipy.optimize.curve_fit now supports an optional nan_policy argument.
  • scipy.optimize.shgo now has parallelization with the workers argument,
    symmetry arguments that can improve performance, class-based design to
    improve usability, and generally improved performance.

scipy.signal improvements

  • istft has an improved warning message when the NOLA condition fails.

scipy.sparse improvements

  • A new public base class scipy.sparse.sparray was introduced, allowing further
    extension of the sparse array API (such as the support for 1-dimensional
    sparse arrays) without breaking backwards compatibility.
    isinstance(x, scipy.sparse.sparray) to select the new sparse array classes,
    while isinstance(x, scipy.sparse.spmatrix) selects only the old sparse
    matrix classes.
  • Division of sparse arrays by a dense array now returns sparse arrays.
  • scipy.sparse.isspmatrix now only returns True for the sparse matrices instances.
    scipy.sparse.issparse now has to be used instead to check for instances of sparse
    arrays or instances of sparse matrices.
  • Sparse arrays constructed with int64 indices will no longer automatically
    downcast to int32.
  • The argmin and argmax methods now return the correct result when explicit
    zeros are present.

scipy.sparse.linalg improvements

  • dividing LinearOperator by a number now returns a
    _ScaledLinearOperator
  • LinearOperator now supports right multiplication by arrays
  • lobpcg should be more efficient following removal of an extraneous
    QR decomposition.

scipy.spatial improvements

  • Usage of new C++ backend for additional distance metrics, the majority of
    which will see substantial performance improvements, though a few minor
    regressions are known. These are focused on distances between boolean
    arrays.

scipy.special improvements

  • The factorial functions factorial, factorial2 and factorialk
    were made consistent in their behavior (in terms of dimensionality,
    errors etc.). Additionally, factorial2 can now handle arrays with
    exact=True, and factorialk can handle arrays.

scipy.stats improvements

New Features

  • scipy.stats.sobol_indices, a method to compute Sobol' sensitivity indices.
  • scipy.stats.dunnett, which performs Dunnett's test of the means of multiple
    experimental groups against the mean of a control group.
  • scipy.stats.ecdf for computing the empirical CDF and complementary
    CDF (survival function / SF) from uncensored or right-censored data. This
    function is also useful for survival analysis / Kaplan-Meier estimation.
  • scipy.stats.logrank to compare survival functions underlying samples.
  • scipy.stats.false_discovery_control for adjusting p-values to control the
    false discovery rate of multiple hypothesis tests using the
    Benjamini-Hochberg or Benjamini-Yekutieli procedures.
  • scipy.stats.CensoredData to represent censored data. It can be used as
    input to the fit method of univariate distributions and to the new
    ecdf function.
  • Filliben's goodness of fit test as method='Filliben' of
    scipy.stats.goodness_of_fit.
  • scipy.stats.ttest_ind has a new method, confidence_interval for
    computing a confidence interval of the difference between means.
  • scipy.stats.MonteCarloMethod, scipy.stats.PermutationMethod, and
    scipy.stats.BootstrapMethod are new classes to configure resampling and/or
    Monte Carlo versions of hypothesis tests. They can currently be used with
    scipy.stats.pearsonr.

Statistical Distributions

  • Added the von-Mises Fisher distribution as scipy.stats.vonmises_fisher.
    This distribution is the most common analogue of the normal distribution
    on the unit sphere.

  • Added the relativistic Breit-Wigner distribution as
    scipy.stats.rel_breitwigner.
    It is used in high energy physics to model resonances.

  • Added the Dirichlet multinomial distribution as
    scipy.stats.dirichlet_multinomial.

  • Improved the speed and precision of several univariate statistical
    distributions.

    • scipy.stats.anglit sf
    • scipy.stats.beta entropy
    • scipy.stats.betaprime cdf, sf, ppf
    • scipy.stats.chi entropy
    • scipy.stats.chi2 entropy
    • scipy.stats.dgamma entropy, cdf, sf, ppf, and isf
    • scipy.stats.dweibull entropy, sf, and isf
    • scipy.stats.exponweib sf and isf
    • scipy.stats.f entropy
    • scipy.stats.foldcauchy sf
    • scipy.stats.foldnorm cdf and sf
    • scipy.stats.gamma entropy
    • scipy.stats.genexpon ppf, isf, rvs
    • scipy.stats.gengamma entropy
    • scipy.stats.geom entropy
    • scipy.stats.genlogistic entropy, logcdf, sf, ppf,
      and isf
    • scipy.stats.genhyperbolic cdf and sf
    • scipy.stats.gibrat sf and isf
    • scipy.stats.gompertz entropy, sf. and isf
    • scipy.stats.halflogistic sf, and isf
    • scipy.stats.halfcauchy sf and isf
    • scipy.stats.halfnorm cdf, sf, and isf
    • scipy.stats.invgamma entropy
    • scipy.stats.invgauss entropy
    • scipy.stats.johnsonsb pdf, cdf, sf, ppf, and isf
    • scipy.stats.johnsonsu pdf, sf, isf, and stats
    • scipy.stats.lognorm fit
    • scipy.stats.loguniform entropy, logpdf, pdf, cdf, ppf,
      and stats
    • scipy.stats.maxwell sf and isf
    • scipy.stats.nakagami entropy
    • scipy.stats.powerlaw sf
    • scipy.stats.powerlognorm logpdf, logsf, sf, and isf
    • scipy.stats.powernorm sf and isf
    • scipy.stats.t entropy, logpdf, and pdf
    • scipy.stats.truncexpon sf, and isf
    • scipy.stats.truncnorm entropy
    • scipy.stats.truncpareto fit
    • scipy.stats.vonmises fit
  • scipy.stats.multivariate_t now has cdf and entropy methods.

  • scipy.stats.multivariate_normal, scipy.stats.matrix_normal, and
    scipy.stats.invwishart now have an entropy method.

Other Improvements

  • scipy.stats.monte_carlo_test now supports multi-sample statistics.
  • scipy.stats.bootstrap can now produce one-sided confidence intervals.
  • scipy.stats.rankdata performance was improved for method=ordinal and
    method=dense.
  • scipy.stats.moment now supports non-central moment calculation.
  • scipy.stats.anderson now supports the weibull_min distribution.
  • scipy.stats.sem and scipy.stats.iqr now support axis, nan_policy,
    and masked array input.

Deprecated features

  • Multi-Ellipsis sparse matrix indexing has been deprecated and will
    be removed in SciPy 1.13.
  • Several methods were deprecated for sparse arrays: asfptype, getrow,
    getcol, get_shape, getmaxprint, set_shape,
    getnnz, and getformat. Additionally, the .A and .H
    attributes were deprecated. Sparse matrix types are not affected.
  • The scipy.linalg functions tri, triu & tril are deprecated and
    will be removed in SciPy 1.13. Users are recommended to use the NumPy
    versions of these functions with identical names.
  • The scipy.signal functions bspline, quadratic & cubic are
    deprecated and will be removed in SciPy 1.13. Users are recommended to use
    scipy.interpolate.BSpline instead.
  • The even keyword of scipy.integrate.simpson is deprecated and will be
    removed in SciPy 1.13.0. Users should leave this as the default as this
    gives improved accuracy compared to the other methods.
  • Using exact=True when passing integers in a float array to factorial
    is deprecated and will be removed in SciPy 1.13.0.
  • float128 and object dtypes are deprecated for scipy.signal.medfilt and
    scipy.signal.order_filter
  • The functions scipy.signal.{lsim2, impulse2, step2} had long been
    deprecated in documentation only. They now raise a DeprecationWarning and
    will be removed in SciPy 1.13.0.
  • Importing window functions directly from scipy.window has been soft
    deprecated since SciPy 1.1.0. They now raise a DeprecationWarning and
    will be removed in SciPy 1.13.0. Users should instead import them from
    scipy.signal.window or use the convenience function
    scipy.signal.get_window.

Backwards incompatible changes

  • The default for the legacy keyword of scipy.special.comb has changed
    from True to False, as announced since its introduction.

Expired Deprecations

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

  • The n keyword has been removed from scipy.stats.moment.
  • The alpha keyword has been removed from scipy.stats.interval.
  • The misspelt gilbrat distribution has been removed (use
    scipy.stats.gibrat).
  • The deprecated spelling of the kulsinski distance metric has been
    removed (use scipy.spatial.distance.kulczynski1).
  • The vertices keyword of scipy.spatial.Delauney.qhull has been removed
    (use simplices).
  • The residual property of scipy.sparse.csgraph.maximum_flow has been
    removed (use flow).
  • The extradoc keyword of scipy.stats.rv_continuous,
    scipy.stats.rv_discrete and scipy.stats.rv_sample has been removed.
  • The sym_pos keyword of scipy.linalg.solve has been removed.
  • The scipy.optimize.minimize function now raises an error for x0 with
    x0.ndim > 1.
  • In scipy.stats.mode, the default value of keepdims is now False,
    and support for non-numeric input has been removed.
  • The function scipy.signal.lsim does not support non-uniform time steps
    anymore.

Other changes

  • Rewrote the source build docs and restructured the contributor guide.
  • Improved support for cross-compiling with meson build system.
  • MyST-NB notebook infrastructure has been added to our documentation.

Authors

  • h-vetinari (69)
  • Oriol Abril-Pla (1) +
  • Tom Adamczewski (1) +
  • Anton Akhmerov (13)
  • Andrey Akinshin (1) +
  • alice (1) +
  • Oren Amsalem (1)
  • Ross Barnowski (13)
  • Christoph Baumgarten (2)
  • Dawson Beatty (1) +
  • Doron Behar (1) +
  • Peter Bell (1)
  • John Belmonte (1) +
  • boeleman (1) +
  • Jack Borchanian (1) +
  • Matt Borland (3) +
  • Jake Bowhay (41)
  • Larry Bradley (1) +
  • Sienna Brent (1) +
  • Matthew Brett (1)
  • Evgeni Burovski (39)
  • Matthias Bussonnier (2)
  • Maria Cann (1) +
  • Alfredo Carella (1) +
  • CJ Carey (34)
  • Hood Chatham (2)
  • Anirudh Dagar (3)
  • Alberto Defendi (1) +
  • Pol del Aguila (1) +
  • Hans Dembinski (1)
  • Dennis (1) +
  • Vinayak Dev (1) +
  • Thomas Duvernay (1)
  • DWesl (4)
  • Stefan Endres (66)
  • Evandro (1) +
  • Tom Eversdijk (2) +
  • Isuru Fernando (1)
  • Franz Forstmayr (4)
  • Joseph Fox-Rabinovitz (1)
  • Stefano Frazzetto (1) +
  • Neil Girdhar (1)
  • Caden Gobat (1) +
  • Ralf Gommers (153)
  • GonVas (1) +
  • Marco Gorelli (1)
  • Brett Graham (2) +
  • Matt Haberland (388)
  • harshvardhan2707 (1) +
  • Alex Herbert (1) +
  • Guillaume Horel (1)
  • Geert-Jan Huizing (1) +
  • Jakob Jakobson (2)
  • Julien Jerphanion (10)
  • jyuv (2)
  • Rajarshi Karmakar (1) +
  • Ganesh Kathiresan (3) +
  • Robert Kern (4)
  • Andrew Knyazev (4)
  • Sergey Koposov (1)
  • Rishi Kulkarni (2) +
  • Eric Larson (1)
  • Zoufiné Lauer-Bare (2) +
  • Antony Lee (3)
  • Gregory R. Lee (8)
  • Guillaume Lemaitre (2) +
  • lilinjie (2) +
  • Yannis Linardos (1) +
  • Christian Lorentzen (5)
  • Loïc Estève (1)
  • Adam Lugowski (1) +
  • Charlie Marsh (2) +
  • Boris Martin (1) +
  • Nicholas McKibben (11)
  • Melissa Weber Mendonça (58)
  • Michał Górny (1) +
  • Jarrod Millman (5)
  • Stefanie Molin (2) +
  • Mark W. Mueller (1) +
  • mustafacevik (1) +
  • Takumasa N (1) +
  • nboudrie (1)
  • Andrew Nelson (112)
  • Nico Schlömer (4)
  • Lysandros Nikolaou (2) +
  • Kyle Oman (1)
  • OmarManzoor (2) +
  • Simon Ott (1) +
  • Geoffrey Oxberry (1) +
  • Geoffrey M. Oxberry (2) +
  • Sravya papaganti (1) +
  • Tirth Patel (2)
  • Ilhan Polat (32)
  • Quentin Barthélemy (1)
  • Matteo Raso (12) +
  • Tyler Reddy (143)
  • Lucas Roberts (1)
  • Pamphile Roy (225)
  • Jordan Rupprecht (1) +
  • Atsushi Sakai (11)
  • Omar Salman (7) +
  • Leo Sandler (1) +
  • Ujjwal Sarswat (3) +
  • Saumya (1) +
  • Daniel Schmitz (79)
  • Henry Schreiner (2) +
  • Dan Schult (8) +
  • Eli Schwartz (6)
  • Tomer Sery (2) +
  • Scott Shambaugh (10) +
  • Gagandeep Singh (1)
  • Ethan Steinberg (6) +
  • stepeos (2) +
  • Albert Steppi (3)
  • Strahinja Lukić (1)
  • Kai Striega (4)
  • suen-bit (1) +
  • Tartopohm (2)
  • Logan Thomas (2) +
  • Jacopo Tissino (1) +
  • Matus Valo (12) +
  • Jacob Vanderplas (2)
  • Christian Veenhuis (1) +
  • Isaac Virshup (3)
  • Stefan van der Walt (14)
  • Warren Weckesser (63)
  • windows-server-2003 (1)
  • Levi John Wolf (3)
  • Nobel Wong (1) +
  • Benjamin Yeh (1) +
  • Rory Yorke (1)
  • Younes (2) +
  • Zaikun ZHANG (1) +
  • Alex Zverianskii (1) +

A total of 134 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.

v1.10.1

Compare Source

SciPy 1.10.1 Release Notes

SciPy 1.10.1 is a bug-fix release with no new features
compared to 1.10.0.

Authors

  • Name (commits)
  • alice (1) +
  • Matt Borland (2) +
  • Evgeni Burovski (2)
  • CJ Carey (1)
  • Ralf Gommers (9)
  • Brett Graham (1) +
  • Matt Haberland (5)
  • Alex Herbert (1) +
  • Ganesh Kathiresan (2) +
  • Rishi Kulkarni (1) +
  • Loïc Estève (1)
  • Michał Górny (1) +
  • Jarrod Millman (1)
  • Andrew Nelson (4)
  • Tyler Reddy (50)
  • Pamphile Roy (2)
  • Eli Schwartz (2)
  • Tomer Sery (1) +
  • Kai Striega (1)
  • Jacopo Tissino (1) +
  • windows-server-2003 (1)

A total of 21 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.


Configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [scipy](https://github.com/scipy/scipy) | dependencies | minor | `~1.10` -> `~1.16` | --- ### Release Notes <details> <summary>scipy/scipy</summary> ### [`v1.16.3`](https://github.com/scipy/scipy/releases/v1.16.3) [Compare Source](https://github.com/scipy/scipy/compare/v1.16.2...v1.16.3) # SciPy 1.16.3 Release Notes SciPy `1.16.3` is a bug-fix release with no new features compared to `1.16.2`. # Authors - Name (commits) - ChrisAB (1) + - Lucas Colley (1) - Ralf Gommers (3) - Matt Haberland (8) - Nick ODell (2) - Ilhan Polat (1) - Tyler Reddy (28) - Lucas Roberts (2) A total of 8 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. The full issue and pull request lists, and the release asset hashes are available in the associated `README.txt` file. ### [`v1.16.2`](https://github.com/scipy/scipy/releases/v1.16.2) [Compare Source](https://github.com/scipy/scipy/compare/v1.16.1...v1.16.2) # SciPy 1.16.2 Release Notes SciPy `1.16.2` is a bug-fix release with no new features compared to `1.16.1`. This is the first stable release of SciPy to provide Windows on ARM wheels on PyPI. # Authors - Name (commits) - Dietrich Brunn (1) - Ralf Gommers (6) - Adam Jones (1) - Gleb Khmyznikov (1) + - Jost Migenda (1) + - newyork_loki (1) - Nick ODell (3) - Dimitri Papadopoulos Orfanos (1) - Ilhan Polat (2) - Tyler Reddy (26) - Mugunthan Selvanayagam (1) + - Shuhei Watanabe (1) + A total of 12 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. The full issue and pull request lists, and the release asset hashes are available in the associated `README.txt` file. ### [`v1.16.1`](https://github.com/scipy/scipy/releases/v1.16.1) [Compare Source](https://github.com/scipy/scipy/compare/v1.16.0...v1.16.1) # SciPy 1.16.1 Release Notes SciPy `1.16.1` is a bug-fix release that adds support for Python `3.14.0rc1`, including PyPI wheels. # Authors - Name (commits) - Evgeni Burovski (1) - Rob Falck (1) - Ralf Gommers (7) - Geoffrey Gunter (1) + - Matt Haberland (2) - Joren Hammudoglu (1) - Andrew Nelson (2) - newyork_loki (1) + - Ilhan Polat (1) - Tyler Reddy (25) - Daniel Schmitz (1) - Dan Schult (2) A total of 12 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. The full issue and pull request lists, and the release asset hashes are available in the associated `README.txt` file. ### [`v1.16.0`](https://github.com/scipy/scipy/releases/v1.16.0) [Compare Source](https://github.com/scipy/scipy/compare/v1.15.3...v1.16.0) # SciPy 1.16.0 Release Notes SciPy `1.16.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.16.x branch, and on adding new features on the main branch. This release requires Python `3.11-3.13` and NumPy `1.25.2` or greater. # Highlights of this release - Improved experimental support for the Python array API standard, including new support in `scipy.signal`, and additional support in `scipy.stats` and `scipy.special`. Improved support for JAX and Dask backends has been added, with notable support in `scipy.cluster.hierarchy`, many functions in `scipy.special`, and many of the trimmed statistics functions. - `scipy.optimize` now uses the new Python implementation from the [`PRIMA`](https://www.libprima.net) package for COBYLA. The PRIMA implementation [fixes many bugs](https://github.com/libprima/prima#bug-fixes) in the old Fortran 77 implementation with [a better performance on average](https://github.com/libprima/prima#improvements). - `scipy.sparse.coo_array` now supports n-D arrays with reshaping, arithmetic and reduction operations like sum/mean/min/max. No n-D indexing or `scipy.sparse.random_array` support yet. - Updated guide and tools for migration from sparse matrices to sparse arrays. - Nearly all functions in the `scipy.linalg` namespace that accept array arguments now support N-dimensional arrays to be processed as a batch. - Two new `scipy.signal` functions, `scipy.signal.firwin_2d` and `scipy.signal.closest_STFT_dual_window`, for creation of a 2-D FIR filter and `scipy.signal.ShortTimeFFT` dual window calculation, respectively. - A new class, `scipy.spatial.transform.RigidTransform`, provides functionality to convert between different representations of rigid transforms in 3-D space. - A new function `scipy.ndimage.vectorized_filter` for generic filters that take advantage of a vectorized Python callable was added. # New features # `scipy.io` improvements - `scipy.io.savemat` now provides informative warnings for invalid field names. - `scipy.io.mmread` now provides a clearer error message when provided with a source file path that does not exist. - `scipy.io.wavfile.read` can now read non-seekable files. # `scipy.integrate` improvements - The error estimate of `scipy.integrate.tanhsinh` was improved. # `scipy.interpolate` improvements - Batch support was added to `scipy.interpolate.make_smoothing_spline`. # `scipy.linalg` improvements - Nearly all functions in the `scipy.linalg` namespace that accept array arguments now support N-dimensional arrays to be processed as a batch. See [`linalg_batch`](https://scipy.github.io/devdocs/tutorial/linalg_batch.html) for details. - `scipy.linalg.sqrtm` is rewritten in C and its performance is improved. It also tries harder to return real-valued results for real-valued inputs if possible. See the function docstring for more details. In this version the input argument `disp` and the optional output argument `errest` are deprecated and will be removed four versions later. Similarly, after changing the underlying algorithm to recursion, the `blocksize` keyword argument has no effect and will be removed two versions later. - Wrappers for `?stevd`, `?langb`, `?sytri`, `?hetri` and `?gbcon` were added to `scipy.linalg.lapack`. - The default driver of `scipy.linalg.eigh_tridiagonal` was improved. - `scipy.linalg.solve` can now estimate the reciprocal condition number and the matrix norm calculation is more efficient. # `scipy.ndimage` improvements - A new function `scipy.ndimage.vectorized_filter` for generic filters that take advantage of a vectorized Python callable was added. - `scipy.ndimage.rotate` has improved performance, especially on ARM platforms. # `scipy.optimize` improvements - COBYLA was updated to use the new Python implementation from the [`PRIMA`](https://www.libprima.net)package. The PRIMA implementation [fixes many bugs](https://github.com/libprima/prima#bug-fixes) in the old Fortran 77 implementation. In addition, it results in [fewer function evaluations on average](https://github.com/libprima/prima#improvements) but it depends on the problem and for some problems it can result in more function evaluations or a less optimal result. For those cases the user can try modifying the initial and final trust region radii given by `rhobeg` and `tol` respectively. A larger `rhobeg` can help the algorithm take bigger steps initially, while a smaller `tol` can help it continue and find a better solution. For more information, see the [PRIMA documentation](https://www.libprima.net). - Several of the `scipy.optimize.minimize` methods, and the `scipy.optimize.least_squares` function, have been given a `workers` keyword. This allows parallelization of some calculations via a map-like callable, such as `multiprocessing.Pool`. These parallelization opportunities typically occur during numerical differentiation. This can greatly speed up minimization when the objective function is expensive to calculate. - The `lm` method of `scipy.optimize.least_squares` can now accept `3-point` and `cs` for the `jac` keyword. - The SLSQP Fortran 77 code was ported to C. When this method is used now the constraint multipliers are exposed to the user through the `multiplier` keyword of the returned `scipy.optimize.OptimizeResult` object. - NNLS code has been corrected and rewritten in C to address the performance regression introduced in 1.15.x - `scipy.optimize.root` now warns for invalid inner parameters when using the `newton_krylov` method - The return value of minimization with `method='L-BFGS-B'` now has a faster `hess_inv.todense()` implementation. Time complexity has improved from cubic to quadratic. - `scipy.optimize.least_squares` has a new `callback` argument that is applicable to the `trf` and `dogbox` methods. `callback` may be used to track optimization results at each step or to provide custom conditions for stopping. # `scipy.signal` improvements - A new function `scipy.signal.firwin_2d` for the creation of a 2-D FIR Filter using the 1-D window method was added. - `scipy.signal.cspline1d_eval` and `scipy.signal.qspline1d_eval` now provide an informative error on empty input rather than hitting the recursion limit. - A new function `scipy.signal.closest_STFT_dual_window` to calculate the `scipy.signal.ShortTimeFFT` dual window of a given window closest to a desired dual window. - A new classmethod `scipy.signal.ShortTimeFFT.from_win_equals_dual` to create a `scipy.signal.ShortTimeFFT` instance where the window and its dual are equal up to a scaling factor. It allows to create short-time Fourier transforms which are unitary mappings. - The performance of `scipy.signal.convolve2d` was improved. # `scipy.sparse` improvements - `scipy.sparse.coo_array` now supports n-D arrays using binary and reduction operations. - Faster operations between two DIA arrays/matrices for: add, sub, multiply, matmul. - `scipy.sparse.csgraph.dijkstra` shortest_path is more efficient. - `scipy.sparse.csgraph.yen` has performance improvements. - Support for lazy loading of `sparse.csgraph` and `sparse.linalg` was added. # `scipy.spatial` improvements - A new class, `scipy.spatial.transform.RigidTransform`, provides functionality to convert between different representations of rigid transforms in 3-D space, its application to vectors and transform composition. It follows the same design approach as `scipy.spatial.transform.Rotation`. - `scipy.spatial.transform.Rotation` now has an appropriate `__repr__` method, and improved performance for its `scipy.spatial.transform.Rotation.apply` method. # `scipy.stats` improvements - A new function `scipy.stats.quantile`, an array API compatible function for quantile estimation, was added. - `scipy.stats.make_distribution` was extended to work with existing discrete distributions and to facilitate the creation of custom distributions in the new random variable infrastructure. - A new distribution, `scipy.stats.Binomial`, was added. - An `equal_var` keyword was added to `scipy.stats.tukey_hsd` (enables the Games-Howell test) and `scipy.stats.f_oneway` (enables Welch ANOVA). - The moment calculation for `scipy.stats.gennorm` was improved. - The `scipy.stats.mode` implementation was vectorized, for faster batch calculation. - Support for `axis`, `nan_policy`, and `keepdims` keywords was added to `scipy.stats.power_divergence`, `scipy.stats.chisquare`, `scipy.stats.pointbiserialr`, `scipy.stats.kendalltau`, `scipy.stats.weightedtau`, `scipy.stats.theilslopes`, `scipy.stats.siegelslopes`, `scipy.stats.boxcox_llf`, and `scipy.stats.linregress`. - Support for `keepdims` and `nan_policy` keywords was added to `scipy.stats.gstd`. - The performance of `scipy.stats.special_ortho_group` and `scipy.stats.pearsonr` was improved. - Support for an `rng` keyword argument was added to the `logcdf` and `cdf` methods of `multivariate_normal_gen` and `multivariate_normal_frozen`. # Array API Standard Support Experimental support for array libraries other than NumPy has been added to multiple submodules in recent versions of SciPy. Please consider testing these features by setting the environment variable `SCIPY_ARRAY_API=1` and providing PyTorch, JAX, CuPy or Dask arrays as array arguments. Many functions in `scipy.stats`, `scipy.special`, `scipy.optimize`, and `scipy.constants` now provide tables documenting compatible array and device types as well as support for lazy arrays and JIT compilation. New features with support and old features with support added for SciPy 1.16.0 include: - Most of the `scipy.signal` functionality - `scipy.ndimage.vectorized_filter` - `scipy.special.stdtrit` - `scipy.special.softmax` - `scipy.special.log_softmax` - `scipy.stats.quantile` - `scipy.stats.gstd` - `scipy.stats.rankdata` Features with extended array API support (generally, improved support for JAX and Dask) in SciPy 1.16.0 include: - many of the `scipy.cluster.hierarchy` functions - many functions in `scipy.special` - many of the trimmed statistics functions in `scipy.stats` SciPy now has a CI job that exercises GPU (CUDA) support, and as a result using PyTorch, CuPy or JAX arrays on GPU with SciPy is now more reliable. # Deprecated features - The unused `atol` argument of `scipy.optimize.nnls` is deprecated and will be removed in SciPy 1.18.0. - The `disp` argument of `scipy.linalg.signm`, `scipy.linalg.logm`, and `scipy.linalg.sqrtm` will be removed in SciPy 1.18.0. - `scipy.stats.multinomial` now emits a `FutureWarning` if the rows of `p` do not sum to `1.0`. This condition will produce NaNs beginning in SciPy 1.18.0. - The `disp` and `iprint` arguments of the `l-bfgs-b` solver of `scipy.optimize` have been deprecated, and will be removed in SciPy 1.18.0. # Expired Deprecations - `scipy.sparse.conjtransp` has been removed. Use `.T.conj()` instead. - The `quadrature='trapz'` option has been removed from `scipy.integrate.quad_vec`, and `scipy.stats.trapz` has been removed. Use `trapezoid` in both instances instead. - `scipy.special.comb` and `scipy.special.perm` now raise when `exact=True` and arguments are non-integral. - Support for inference of the two sets of measurements from the single argument `x` has been removed from `scipy.stats.linregress`. The data must be specified separately as `x` and `y`. - Support for NumPy masked arrays has been removed from `scipy.stats.power_divergence` and `scipy.stats.chisquare`. - A significant number of functions from non-public namespaces (e.g., `scipy.sparse.base`, `scipy.interpolate.dfitpack`) were cleaned up. They were previously already emitting deprecation warnings. # Backwards incompatible changes - Several of the `scipy.linalg` functions for solving a linear system (e.g. `scipy.linalg.solve`) documented that the RHS argument must be either 1-D or 2-D but did not always raise an error when the RHS argument had more the two dimensions. Now, many-dimensional right hand sides are treated according to the rules specified in [`linalg_batch`](https://scipy.github.io/devdocs/tutorial/linalg_batch.html). - `scipy.stats.bootstrap` now explicitly broadcasts elements of `data` to the same shape (ignoring `axis`) before performing the calculation. - Several submodule names are no longer available via `from scipy.signal import *`, but may still be imported directly, as detailed at [scipy/scipy-stubs#&#8203;549](https://github.com/scipy/scipy-stubs/pull/549). # Build and packaging related changes - The minimum supported version of Clang was bumped from 12.0 to 15.0. - The lowest supported macOS version for wheels on PyPI is now 10.14 instead of 10.13. - The sdist contents were optimized, resulting in a size reduction of about 50%, from 60 MB to 30 MB. - For `Cython>=3.1.0`, SciPy now uses the new `cython --generate-shared` functionality, which reduces the total size of SciPy's wheels and on-disk installations significantly. - SciPy no longer contains an internal shared library that requires RPATH support, after `sf_error_state` was removed from `scipy.special`. - A new build option `-Duse-system-libraries` has been added. It allows opting in to using system libraries instead of using vendored sources. Currently `Boost.Math` and `Qhull` are supported as system build dependencies. # Other changes - A new accompanying release of `scipy-stubs` (`v1.16.0.0`) is available at <https://github.com/scipy/scipy-stubs/releases/tag/v1.16.0.0> - The internal dependency of `scipy._lib` on `scipy.sparse` was removed, which reduces the import time of a number of other SciPy submodules. - Support for free-threaded CPython was improved: the last known thread-safety issues in `scipy.special` were fixed, and `pytest-run-parallel` is now used in a CI job to guard against regressions. - Support for [`spin`](https://github.com/scientific-python/spin) as a developer CLI was added, including support for editable installs. The SciPy-specific `python dev.py` CLI will be removed in the next release cycle in favor of `spin`. - The vendored Qhull library was upgraded from version 2019.1 to 2020.2. - A large amount of the C++ code in `scipy.special` was moved to the new header-only [`xsf`](https://github.com/scipy/xsf) library. That library was included back in the SciPy source tree as a git submodule. - The `namedtuple`-like bunch objects returned by some SciPy functions now have improved compatibility with the `polars` library. - The output of the `rvs` method of `scipy.stats.wrapcauchy` is now mapped to the unit circle between 0 and `2 * pi`. - The `lm` method of `scipy.optimize.least_squares` now has a different behavior for the maximum number of function evaluations, `max_nfev`. The default for the `lm` method is changed to `100 * n`, for both a callable and a numerically estimated jacobian. This limit on function evaluations excludes those used for any numerical estimation of the Jacobian. Previously the default when using an estimated jacobian was `100 * n * (n + 1)`, because the method included evaluations used in the estimation. In addition, for the `lm` method the number of function calls used in Jacobian approximation is no longer included in `OptimizeResult.nfev`. This brings the behavior of `lm`, `trf`, and `dogbox` into line. # Authors - Name (commits) - h-vetinari (4) - aiudirog (1) + - Anton Akhmerov (2) - Thorsten Alteholz (1) + - Gabriel Augusto (1) + - Backfisch263 (1) + - Nickolai Belakovski (5) - Peter Bell (1) - Benoît W. (1) + - Evandro Bernardes (1) - Gauthier Berthomieu (1) + - Maxwell Bileschi (1) + - Sam Birch (1) + - Florian Bourgey (3) + - Charles Bousseau (2) + - Richard Strong Bowen (2) + - Jake Bowhay (127) - Matthew Brett (1) - Dietrich Brunn (53) - Evgeni Burovski (254) - Christine P. Chai (12) + - Gayatri Chakkithara (1) + - Saransh Chopra (2) + - Omer Cohen (1) + - Lucas Colley (91) - Yahya Darman (3) + - Benjamin Eisele (1) + - Donnie Erb (1) - Sagi Ezri (58) + - Alexander Fabisch (2) + - Matthew H Flamm (1) - Karthik Viswanath Ganti (1) + - Neil Girdhar (1) - Ralf Gommers (162) - Rohit Goswami (4) - Saarthak Gupta (4) + - Matt Haberland (326) - Sasha Hafner (1) + - Joren Hammudoglu (11) - Chengyu Han (1) + - Charles Harris (1) - Kim Hsieh (4) + - Yongcai Huang (2) + - Lukas Huber (1) + - Yuji Ikeda (2) + - Guido Imperiale (105) + - Robert Kern (2) - Harin Khakhi (2) + - Agriya Khetarpal (4) - Daniil Kiktenko (1) + - Kirill R. (2) + - Tetsuo Koyama (1) - Jigyasu Krishnan (1) + - Abhishek Kumar (2) + - Pratham Kumar (3) + - David Kun (1) + - Eric Larson (3) - lciti (1) - Antony Lee (1) - Kieran Leschinski (1) + - Thomas Li (2) + - Yuxi Long (2) + - Christian Lorentzen (2) - Loïc Estève (4) - Panos Mavrogiorgos (1) + - Nikolay Mayorov (2) - Melissa Weber Mendonça (10) - Michał Górny (1) - Miguel Cárdenas (2) + - Swastik Mishra (1) + - Sturla Molden (2) - Andreas Nazlidis (1) + - Andrew Nelson (209) - Parth Nobel (1) + - Nick ODell (9) - Giacomo Petrillo (1) - Victor PM (10) + - pmav99 (1) + - Ilhan Polat (74) - Tyler Reddy (128) - Érico Nogueira Rolim (1) + - Pamphile Roy (10) - Mikhail Ryazanov (6) - Atsushi Sakai (9) - Marco Salathe (1) + - sanvi (1) + - Neil Schemenauer (2) + - Daniel Schmitz (20) - Martin Schuck (1) + - Dan Schult (33) - Tomer Sery (19) - Adrian Seyboldt (1) + - Scott Shambaugh (4) - ShannonS00 (1) + - sildater (3) + - Param Singh (1) + - G Sreeja (7) + - Albert Steppi (133) - Kai Striega (3) - Anushka Suyal (2) - Julia Tatz (1) + - Tearyt (1) + - Elia Tomasi (1) + - Jamie Townsend (2) + - Edgar Andrés Margffoy Tuay (4) - Matthias Urlichs (1) + - Mark van Rossum (1) + - Jacob Vanderplas (2) - David Varela (2) + - Christian Veenhuis (3) - vfdev (1) - Stefan van der Walt (2) - Warren Weckesser (5) - Jason N. White (1) + - windows-server-2003 (5) - Zhiqing Xiao (1) - Pavadol Yamsiri (1) - Rory Yorke (3) - Irwin Zaid (4) - Austin Zhang (1) + - William Zijie Zhang (1) + - Zaikun Zhang (1) + - Zhenyu Zhu (1) + - Eric Zitong Zhou (11) + - Case Zumbrum (2) + - ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (45) A total of 126 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. Complete issue list, PR list, and release asset hashes are available in the associated `README.txt`. ### [`v1.15.3`](https://github.com/scipy/scipy/releases/v1.15.3) [Compare Source](https://github.com/scipy/scipy/compare/v1.15.2...v1.15.3) # SciPy 1.15.3 Release Notes SciPy `1.15.3` is a bug-fix release with no new features compared to `1.15.2`. For the complete issue and PR lists see the [raw release notes](https://github.com/scipy/scipy/releases/download/v1.15.3/README.txt). # Authors - Name (commits) - aiudirog (1) + - Nickolai Belakovski (1) - Florian Bourgey (1) + - Richard Strong Bowen (2) + - Jake Bowhay (1) - Dietrich Brunn (2) - Evgeni Burovski (1) - Lucas Colley (1) - Ralf Gommers (1) - Saarthak Gupta (1) + - Matt Haberland (4) - Chengyu Han (1) + - Lukas Huber (1) + - Nick ODell (2) - Ilhan Polat (4) - Tyler Reddy (52) - Neil Schemenauer (1) + - Dan Schult (1) - sildater (1) + - Gagandeep Singh (4) - Albert Steppi (2) - Matthias Urlichs (1) + - David Varela (1) + - ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (3) A total of 24 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. ### [`v1.15.2`](https://github.com/scipy/scipy/releases/v1.15.2) [Compare Source](https://github.com/scipy/scipy/compare/v1.15.1...v1.15.2) # SciPy 1.15.2 Release Notes SciPy `1.15.2` is a bug-fix release with no new features compared to `1.15.1`. Free-threaded Python `3.13` wheels for Linux ARM platform are available on PyPI starting with this release. # Authors - Name (commits) - Peter Bell (1) - Charles Bousseau (1) + - Jake Bowhay (3) - Matthew Brett (1) - Ralf Gommers (3) - Rohit Goswami (1) - Matt Haberland (4) - Parth Nobel (1) + - Tyler Reddy (33) - Daniel Schmitz (2) - Dan Schult (5) - Scott Shambaugh (2) - Edgar Andrés Margffoy Tuay (1) - Warren Weckesser (4) A total of 14 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. ### [`v1.15.1`](https://github.com/scipy/scipy/releases/v1.15.1) [Compare Source](https://github.com/scipy/scipy/compare/v1.15.0...v1.15.1) # SciPy 1.15.1 Release Notes SciPy `1.15.1` is a bug-fix release with no new features compared to `1.15.0`. Importantly, an issue with the import of `scipy.optimize` breaking other packages has been fixed. # Authors - Name (commits) - Ralf Gommers (3) - Rohit Goswami (1) - Matt Haberland (2) - Tyler Reddy (7) - Daniel Schmitz (1) A total of 5 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. ### [`v1.15.0`](https://github.com/scipy/scipy/releases/v1.15.0) [Compare Source](https://github.com/scipy/scipy/compare/v1.14.1...v1.15.0) # SciPy 1.15.0 Release Notes SciPy `1.15.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.15.x branch, and on adding new features on the main branch. This release requires Python `3.10-3.13` and NumPy `1.23.5` or greater. # Highlights of this release - Sparse arrays are now fully functional for 1-D and 2-D arrays. We recommend that all new code use sparse arrays instead of sparse matrices and that developers start to migrate their existing code from sparse matrix to sparse array: [`migration_to_sparray`](https://scipy.github.io/devdocs/reference/sparse.migration_to_sparray.html). Both `sparse.linalg` and `sparse.csgraph` work with either sparse matrix or sparse array and work internally with sparse array. - Sparse arrays now provide basic support for n-D arrays in the COO format including `add`, `subtract`, `reshape`, `transpose`, `matmul`, `dot`, `tensordot` and others. More functionality is coming in future releases. - Preliminary support for free-threaded Python 3.13. - New probability distribution features in `scipy.stats` can be used to improve the speed and accuracy of existing continuous distributions and perform new probability calculations. - Several new features support vectorized calculations with Python Array API Standard compatible input (see "Array API Standard Support" below): - `scipy.differentiate` is a new top-level submodule for accurate estimation of derivatives of black box functions. - `scipy.optimize.elementwise` contains new functions for root-finding and minimization of univariate functions. - `scipy.integrate` offers new functions `cubature`, `tanhsinh`, and `nsum` for multivariate integration, univariate integration, and univariate series summation, respectively. - `scipy.interpolate.AAA` adds the AAA algorithm for barycentric rational approximation of real or complex functions. - `scipy.special` adds new functions offering improved Legendre function implementations with a more consistent interface. # New features # `scipy.differentiate` introduction The new `scipy.differentiate` sub-package contains functions for accurate estimation of derivatives of black box functions. - Use `scipy.differentiate.derivative` for first-order derivatives of scalar-in, scalar-out functions. - Use `scipy.differentiate.jacobian` for first-order partial derivatives of vector-in, vector-out functions. - Use `scipy.differentiate.hessian` for second-order partial derivatives of vector-in, scalar-out functions. All functions use high-order finite difference rules with adaptive (real) step size. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below). # `scipy.integrate` improvements - The new `scipy.integrate.cubature` function supports multidimensional integration, and has support for approximating integrals with one or more sets of infinite limits. - `scipy.integrate.tanhsinh` is now exposed for public use, allowing evaluation of a convergent integral using tanh-sinh quadrature. - `scipy.integrate.nsum` evaluates finite and infinite series and their logarithms. - `scipy.integrate.lebedev_rule` computes abscissae and weights for integration over the surface of a sphere. - The `QUADPACK` Fortran77 package has been ported to C. # `scipy.interpolate` improvements - `scipy.interpolate.AAA` adds the AAA algorithm for barycentric rational approximation of real or complex functions. - `scipy.interpolate.FloaterHormannInterpolator` adds barycentric rational interpolation. - New functions `scipy.interpolate.make_splrep` and `scipy.interpolate.make_splprep` implement construction of smoothing splines. The algorithmic content is equivalent to FITPACK (`splrep` and `splprep` functions, and `*UnivariateSpline` classes) and the user API is consistent with `make_interp_spline`: these functions receive data arrays and return a `scipy.interpolate.BSpline` instance. - New generator function `scipy.interpolate.generate_knots` implements the FITPACK strategy for selecting knots of a smoothing spline given the smoothness parameter, `s`. The function exposes the internal logic of knot selection that `splrep` and `*UnivariateSpline` was using. # `scipy.linalg` improvements - `scipy.linalg.interpolative` Fortran77 code has been ported to Cython. - `scipy.linalg.solve` supports several new values for the `assume_a` argument, enabling faster computation for diagonal, tri-diagonal, banded, and triangular matrices. Also, when `assume_a` is left unspecified, the function now automatically detects and exploits diagonal, tri-diagonal, and triangular structures. - `scipy.linalg` matrix creation functions (`scipy.linalg.circulant`, `scipy.linalg.companion`, `scipy.linalg.convolution_matrix`, `scipy.linalg.fiedler`, `scipy.linalg.fiedler_companion`, and `scipy.linalg.leslie`) now support batch matrix creation. - `scipy.linalg.funm` is faster. - `scipy.linalg.orthogonal_procrustes` now supports complex input. - Wrappers for the following LAPACK routines have been added in `scipy.linalg.lapack`: `?lantr`, `?sytrs`, `?hetrs`, `?trcon`, and `?gtcon`. - `scipy.linalg.expm` was rewritten in C. - `scipy.linalg.null_space` now accepts the new arguments `overwrite_a`, `check_finite`, and `lapack_driver`. - `id_dist` Fortran code was rewritten in Cython. # `scipy.ndimage` improvements - Several additional filtering functions now support an `axes` argument that specifies which axes of the input filtering is to be performed on. These include `correlate`, `convolve`, `generic_laplace`, `laplace`, `gaussian_laplace`, `derivative2`, `generic_gradient_magnitude`, `gaussian_gradient_magnitude` and `generic_filter`. - The binary and grayscale morphology functions now support an `axes` argument that specifies which axes of the input filtering is to be performed on. - `scipy.ndimage.rank_filter` time complexity has improved from `n` to `log(n)`. # `scipy.optimize` improvements - The vendored HiGHS library has been upgraded from `1.4.0` to `1.8.0`, bringing accuracy and performance improvements to solvers. - The `MINPACK` Fortran77 package has been ported to C. - The `L-BFGS-B` Fortran77 package has been ported to C. - The new `scipy.optimize.elementwise` namespace includes functions `bracket_root`, `find_root`, `bracket_minimum`, and `find_minimum` for root-finding and minimization of univariate functions. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below). Compared to existing functions (e.g. `scipy.optimize.root_scalar` and `scipy.optimize.minimize_scalar`), these functions can offer speedups of over 100x when used with NumPy arrays, and even greater gains are possible with other Array API Standard compatible array libraries (e.g. CuPy). - `scipy.optimize.differential_evolution` now supports more general use of `workers`, such as passing a map-like callable. - `scipy.optimize.nnls` was rewritten in Cython. - `HessianUpdateStrategy` now supports `__matmul__`. # `scipy.signal` improvements - Add functionality of complex-valued waveforms to `signal.chirp()`. - `scipy.signal.lombscargle` has two new arguments, `weights` and `floating_mean`, enabling sample weighting and removal of an unknown y-offset independently for each frequency. Additionally, the `normalize` argument includes a new option to return the complex representation of the amplitude and phase. - New function `scipy.signal.envelope` for computation of the envelope of a real or complex valued signal. # `scipy.sparse` improvements - A [migration guide](https://scipy.github.io/devdocs/reference/sparse.migration_to_sparray.html) is now available for moving from sparse.matrix to sparse.array in your code/library. - Sparse arrays now support indexing for 1-D and 2-D arrays. So, sparse arrays are now fully functional for 1-D and 2D. - n-D sparse arrays in COO format can now be constructed, reshaped and used for basic arithmetic. - New functions `sparse.linalg.is_sptriangular` and `sparse.linalg.spbandwidth` mimic the existing dense tools `linalg.is_triangular` and `linalg.bandwidth`. - `sparse.linalg` and `sparse.csgraph` now work with sparse arrays. Be careful that your index arrays are 32-bit. We are working on 64bit support. - The vendored `ARPACK` library has been upgraded to version `3.9.1`. - COO, CSR, CSC and LIL formats now support the `axis` argument for `count_nonzero`. - Sparse arrays and matrices may now raise errors when initialized with incompatible data types, such as `float16`. - `min`, `max`, `argmin`, and `argmax` now support computation over nonzero elements only via the new `explicit` argument. - New functions `get_index_dtype` and `safely_cast_index_arrays` are available to facilitate index array casting in `sparse`. # `scipy.spatial` improvements - `Rotation.concatenate` now accepts a bare `Rotation` object, and will return a copy of it. # `scipy.special` improvements - New functions offering improved Legendre function implementations with a more consistent interface. See respective docstrings for more information. - `scipy.special.legendre_p`, `scipy.special.legendre_p_all` - `scipy.special.assoc_legendre_p`, `scipy.special.assoc_legendre_p_all` - `scipy.special.sph_harm_y`, `scipy.special.sph_harm_y_all` - `scipy.special.sph_legendre_p`, `scipy.special.sph_legendre_p_all`, - The factorial functions `special.{factorial,factorial2,factorialk}` now offer an extension to the complex domain by passing the kwarg `extend='complex'`. This is opt-in because it changes the values for negative inputs (which by default return 0), as well as for some integers (in the case of `factorial2` and `factorialk`; for more details, check the respective docstrings). - `scipy.special.zeta` now defines the Riemann zeta function on the complex plane. - `scipy.special.softplus` computes the softplus function - The spherical Bessel functions (`scipy.special.spherical_jn`, `scipy.special.spherical_yn`, `scipy.special.spherical_in`, and `scipy.special.spherical_kn`) now support negative arguments with real dtype. - `scipy.special.logsumexp` now preserves precision when one element of the sum has magnitude much bigger than the rest. - The accuracy of several functions has been improved: - `scipy.special.ncfdtr`, `scipy.special.nctdtr`, and `scipy.special.gdtrib` have been improved throughout the domain. - `scipy.special.hyperu` is improved for the case of `b=1`, small `x`, and small `a`. - `scipy.special.logit` is improved near the argument `p=0.5`. - `scipy.special.rel_entr` is improved when `x/y` overflows, underflows, or is close to `1`. - `scipy.special.ndtr` is now more efficient for `sqrt(2)/2 < |x| < 1`. # `scipy.stats` improvements - A new probability distribution infrastructure has been added for the implementation of univariate, continuous distributions. It has several speed, accuracy, memory, and interface advantages compared to the previous infrastructure. See [`rv_infrastructure`](https://scipy.github.io/devdocs/tutorial/stats/rv_infrastructure.html) for a tutorial. - Use `scipy.stats.make_distribution` to treat an existing continuous distribution (e.g. `scipy.stats.norm`) with the new infrastructure. This can improve the speed and accuracy of existing distributions, especially those with methods not overridden with distribution-specific formulas. - `scipy.stats.Normal` and `scipy.stats.Uniform` are pre-defined classes to represent the normal and uniform distributions, respectively. Their interfaces may be faster and more convenient than those produced by `make_distribution`. - `scipy.stats.Mixture` can be used to represent mixture distributions. - Instances of `scipy.stats.Normal`, `scipy.stats.Uniform`, and the classes returned by `scipy.stats.make_distribution` are supported by several new mathematical transformations. - `scipy.stats.truncate` for truncation of the support. - `scipy.stats.order_statistic` for the order statistics of a given number of IID random variables. - `scipy.stats.abs`, `scipy.stats.exp`, and `scipy.stats.log`. For example, `scipy.stats.abs(Normal())` is distributed according to the folded normal and `scipy.stats.exp(Normal())` is lognormally distributed. - The new `scipy.stats.lmoment` calculates sample l-moments and l-moment ratios. Notably, these sample estimators are unbiased. - `scipy.stats.chatterjeexi` computes the Xi correlation coefficient, which can detect nonlinear dependence. The function also performs a hypothesis test of independence between samples. - `scipy.stats.wilcoxon` has improved method resolution logic for the default `method='auto'`. Other values of `method` provided by the user are now respected in all cases, and the method argument `approx` has been renamed to `asymptotic` for consistency with similar functions. (Use of `approx` is still allowed for backward compatibility.) - There are several new probability distributions: - `scipy.stats.dpareto_lognorm` represents the double Pareto lognormal distribution. - `scipy.stats.landau` represents the Landau distribution. - `scipy.stats.normal_inverse_gamma` represents the normal-inverse-gamma distribution. - `scipy.stats.poisson_binom` represents the Poisson binomial distribution. - Batch calculation with `scipy.stats.alexandergovern` and `scipy.stats.combine_pvalues` is faster. - `scipy.stats.chisquare` added an argument `sum_check`. By default, the function raises an error when the sum of expected and obseved frequencies are not equal; setting `sum_check=False` disables this check to facilitate hypothesis tests other than Pearson's chi-squared test. - The accuracy of several distribution methods has been improved, including: - `scipy.stats.nct` method `pdf` - `scipy.stats.crystalball` method `sf` - `scipy.stats.geom` method `rvs` - `scipy.stats.cauchy` methods `logpdf`, `pdf`, `ppf` and `isf` - The `logcdf` and/or `logsf` methods of distributions that do not override the generic implementation of these methods, including `scipy.stats.beta`, `scipy.stats.betaprime`, `scipy.stats.cauchy`, `scipy.stats.chi`, `scipy.stats.chi2`, `scipy.stats.exponweib`, `scipy.stats.gamma`, `scipy.stats.gompertz`, `scipy.stats.halflogistic`, `scipy.stats.hypsecant`, `scipy.stats.invgamma`, `scipy.stats.laplace`, `scipy.stats.levy`, `scipy.stats.loggamma`, `scipy.stats.maxwell`, `scipy.stats.nakagami`, and `scipy.stats.t`. - `scipy.stats.qmc.PoissonDisk` now accepts lower and upper bounds parameters `l_bounds` and `u_bounds`. - `scipy.stats.fisher_exact` now supports two-dimensional tables with shapes other than `(2, 2)`. # Preliminary Support for Free-Threaded CPython 3.13 SciPy `1.15` has preliminary support for the free-threaded build of CPython `3.13.` This allows SciPy functionality to execute in parallel with Python threads (see the `threading` stdlib module). This support was enabled by fixing a significant number of thread-safety issues in both pure Python and C/C++/Cython/Fortran extension modules. Wheels are provided on PyPI for this release; NumPy `>=2.1.3` is required at runtime. Note that building for a free-threaded interpreter requires a recent pre-release or nightly for Cython `3.1.0`. Support for free-threaded Python does not mean that SciPy is fully thread-safe. Please see [`scipy_thread_safety`](https://scipy.github.io/devdocs/tutorial/thread_safety.html) for more details. If you are interested in free-threaded Python, for example because you have a multiprocessing-based workflow that you are interested in running with Python threads, we encourage testing and experimentation. If you run into problems that you suspect are because of SciPy, please open an issue, checking first if the bug also occurs in the "regular" non-free-threaded CPython `3.13` build. Many threading bugs can also occur in code that releases the GIL; disabling the GIL only makes it easier to hit threading bugs. # Array API Standard Support Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing PyTorch, JAX, ndonnx, or CuPy arrays as array arguments. Features with support added for SciPy `1.15.0` include: - All functions in `scipy.differentiate` (new sub-package) - All functions in `scipy.optimize.elementwise` (new namespace) - `scipy.optimize.rosen`, `scipy.optimize.rosen_der`, and `scipy.optimize.rosen_hess` - `scipy.special.logsumexp` - `scipy.integrate.trapezoid` - `scipy.integrate.tanhsinh` (newly public function) - `scipy.integrate.cubature` (new function) - `scipy.integrate.nsum` (new function) - `scipy.special.chdtr`, `scipy.special.betainc`, and `scipy.special.betaincc` - `scipy.stats.boxcox_llf` - `scipy.stats.differential_entropy` - `scipy.stats.zmap`, `scipy.stats.zscore`, and `scipy.stats.gzscore` - `scipy.stats.tmean`, `scipy.stats.tvar`, `scipy.stats.tstd`, `scipy.stats.tsem`, `scipy.stats.tmin`, and `scipy.stats.tmax` - `scipy.stats.gmean`, `scipy.stats.hmean` and `scipy.stats.pmean` - `scipy.stats.combine_pvalues` - `scipy.stats.ttest_ind`, `scipy.stats.ttest_rel` - `scipy.stats.directional_stats` - `scipy.ndimage` functions will now delegate to `cupyx.scipy.ndimage`, and for other backends will transit via NumPy arrays on the host. # Deprecated features and future changes - Functions `scipy.linalg.interpolative.rand` and `scipy.linalg.interpolative.seed` have been deprecated and will be removed in SciPy `1.17.0`. - Complex inputs to `scipy.spatial.distance.cosine` and `scipy.spatial.distance.correlation` have been deprecated and will raise an error in SciPy `1.17.0`. - `scipy.spatial.distance.kulczynski1` and `scipy.spatial.distance.sokalmichener` were deprecated and will be removed in SciPy `1.17.0`. - `scipy.stats.find_repeats` is deprecated and will be removed in SciPy `1.17.0`. Please use `numpy.unique`/`numpy.unique_counts` instead. - `scipy.linalg.kron` is deprecated in favour of `numpy.kron`. - Using object arrays and longdouble arrays in `scipy.signal` convolution/correlation functions (`scipy.signal.correlate`, `scipy.signal.convolve` and `scipy.signal.choose_conv_method`) and filtering functions (`scipy.signal.lfilter`, `scipy.signal.sosfilt`) has been deprecated and will be removed in SciPy `1.17.0`. - `scipy.stats.linregress` has deprecated one-argument use; the two variables must be specified as separate arguments. - `scipy.stats.trapz` is deprecated in favor of `scipy.stats.trapezoid`. - `scipy.special.lpn` is deprecated in favor of `scipy.special.legendre_p_all`. - `scipy.special.lpmn` and `scipy.special.clpmn` are deprecated in favor of `scipy.special.assoc_legendre_p_all`. - `scipy.special.sph_harm` has been deprecated in favor of `scipy.special.sph_harm_y`. - Multi-dimensional `r` and `c` arrays passed to `scipy.linalg.toeplitz`, `scipy.linalg.matmul_toeplitz`, or `scipy.linalg.solve_toeplitz` will be treated as batches of 1-D coefficients beginning in SciPy `1.17.0`. - The `random_state` and `permutations` arguments of `scipy.stats.ttest_ind` are deprecated. Use `method` to perform a permutation test, instead. # Expired Deprecations - The wavelet functions in `scipy.signal` have been removed. This includes `daub`, `qmf`, `cascade`, `morlet`, `morlet2`, `ricker`, and `cwt`. Users should use `pywavelets` instead. - `scipy.signal.cmplx_sort` has been removed. - `scipy.integrate.quadrature` and `scipy.integrate.romberg` have been removed in favour of `scipy.integrate.quad`. - `scipy.stats.rvs_ratio_uniforms` has been removed in favor of `scipy.stats.sampling.RatioUniforms`. - `scipy.special.factorial` now raises an error for non-integer scalars when `exact=True`. - `scipy.integrate.cumulative_trapezoid` now raises an error for values of `initial` other than `0` and `None`. - Complex dtypes now raise an error in `scipy.interpolate.Akima1DInterpolator` and `scipy.interpolate.PchipInterpolator` - `special.btdtr` and `special.btdtri` have been removed. - The default of the `exact=` kwarg in `special.factorialk` has changed from `True` to `False`. - All functions in the `scipy.misc` submodule have been removed. # Backwards incompatible changes - `interpolate.BSpline.integrate` output is now always a numpy array. Previously, for 1D splines the output was a python float or a 0D array depending on the value of the `extrapolate` argument. - `scipy.stats.wilcoxon` now respects the `method` argument provided by the user. Previously, even if `method='exact'` was specified, the function would resort to `method='approx'` in some cases. - `scipy.integrate.AccuracyWarning` has been removed as the functions the warning was emitted from (`scipy.integrate.quadrature` and `scipy.integrate.romberg`) have been removed. # Other changes - A separate accompanying type stubs package, `scipy-stubs`, will be made available with the `1.15.0` release. [Installation instructions are available](https://github.com/jorenham/scipy-stubs?tab=readme-ov-file#installation). - `scipy.stats.bootstrap` now emits a `FutureWarning` if the shapes of the input arrays do not agree. Broadcast the arrays to the same batch shape (i.e. for all dimensions except those specified by the `axis` argument) to avoid the warning. Broadcasting will be performed automatically in the future. - SciPy endorsed [SPEC-7](https://scientific-python.org/specs/spec-0007), which proposes a `rng` argument to control pseudorandom number generation (PRNG) in a standard way, replacing legacy arguments like `seed` and `random_sate`. In many cases, use of `rng` will change the behavior of the function unless the argument is already an instance of `numpy.random.Generator`. - Effective in SciPy `1.15.0`: - The `rng` argument has been added to the following functions: `scipy.cluster.vq.kmeans`, `scipy.cluster.vq.kmeans2`, `scipy.interpolate.BarycentricInterpolator`, `scipy.interpolate.barycentric_interpolate`, `scipy.linalg.clarkson_woodruff_transform`, `scipy.optimize.basinhopping`, `scipy.optimize.differential_evolution`, `scipy.optimize.dual_annealing`, `scipy.optimize.check_grad`, `scipy.optimize.quadratic_assignment`, `scipy.sparse.random`, `scipy.sparse.random_array`, `scipy.sparse.rand`, `scipy.sparse.linalg.svds`, `scipy.spatial.transform.Rotation.random`, `scipy.spatial.distance.directed_hausdorff`, `scipy.stats.goodness_of_fit`, `scipy.stats.BootstrapMethod`, `scipy.stats.PermutationMethod`, `scipy.stats.bootstrap`, `scipy.stats.permutation_test`, `scipy.stats.dunnett`, all `scipy.stats.qmc` classes that consume random numbers, and `scipy.stats.sobol_indices`. - When passed by keyword, the `rng` argument will follow the SPEC 7 standard behavior: the argument will be normalized with `np.random.default_rng` before being used. - When passed by position or legacy keyword, the behavior of the argument will remain unchanged (for now). - It is planned that in `1.17.0` the legacy argument will start emitting warnings, and that in `1.19.0` the default behavior will change. - In all cases, users can avoid future disruption by proactively passing an instance of `np.random.Generator` by keyword `rng`. For details, see [SPEC-7](https://scientific-python.org/specs/spec-0007/). - The SciPy build no longer adds `-std=legacy` for Fortran code, except when using Gfortran. This avoids problems with the new Flang and AMD Fortran compilers. It may make new build warnings appear for other compilers - if so, please file an issue. - `scipy.signal.sosfreqz` has been renamed to `scipy.signal.freqz_sos`. New code should use the new name. The old name is maintained as an alias for backwards compatibility. - Testing thread-safety improvements related to Python `3.13t` have been made in: `scipy.special`, `scipy.spatial`, `scipy.sparse`, `scipy.interpolate`. # Authors (commits) - endolith (4) - h-vetinari (62) - a-drenaline (1) + - Afleloup (1) + - Ahmad Alkadri (1) + - Luiz Eduardo Amaral (3) + - Virgile Andreani (3) - Isaac Alonso Asensio (2) + - Matteo Bachetti (1) + - Arash Badie-Modiri (1) + - Arnaud Baguet (1) + - Soutrik Bandyopadhyay (1) + - Ankit Barik (1) + - Christoph Baumgarten (1) - Nickolai Belakovski (3) - Krishan Bhasin (1) + - Jake Bowhay (89) - Michael Bratsch (2) + - Matthew Brett (1) - Keith Briggs (1) + - Olly Britton (145) + - Dietrich Brunn (11) - Clemens Brunner (1) - Evgeni Burovski (185) - Matthias Bussonnier (7) - CJ Carey (32) - Cesar Carrasco (4) + - Hood Chatham (1) - Aadya Chinubhai (1) - Alessandro Chitarrini (1) + - Thibault de Coincy (1) + - Lucas Colley (217) - Martin Diehl (1) + - Djip007 (1) + - Kevin Doshi (2) + - Michael Dunphy (2) - Andy Everall (1) + - Thomas J. Fan (2) - fancidev (60) - Sergey Fedorov (2) + - Sahil Garje (1) + - Gabriel Gerlero (2) - Yotam Gingold (1) + - Ralf Gommers (111) - Rohit Goswami (62) - Anil Gurses (1) + - Oscar Gustafsson (1) + - Matt Haberland (392) - Matt Hall (1) + - Joren Hammudoglu (6) + - CY Han (1) + - Daniel Isaac (4) + - Maxim Ivanov (1) - Jakob Jakobson (2) - Janez Demšar (4) + - Chris Jerdonek (2) + - Adam Jones (4) + - Aditi Juneja (1) + - Nuri Jung (1) + - Guus Kamphuis (1) + - Aditya Karumanchi (2) + - Robert Kern (5) - Agriya Khetarpal (11) - Andrew Knyazev (7) - Gideon Genadi Kogan (1) + - Damien LaRocque (1) + - Eric Larson (10) - Gregory R. Lee (4) - Linfye (1) + - Boyu Liu (1) + - Drew Allan Loney (1) + - Christian Lorentzen (1) - Loïc Estève (2) - Smit Lunagariya (1) - Henry Lunn (1) + - Marco Maggi (4) - Lauren Main (1) + - Martin Spišák (1) + - Mateusz Sokół (4) - Jan-Kristian Mathisen (1) + - Nikolay Mayorov (2) - Nicholas McKibben (1) - Melissa Weber Mendonça (62) - João Mendes (10) - Gian Marco Messa (1) + - Samuel Le Meur-Diebolt (1) + - Michał Górny (2) - Naoto Mizuno (2) - Nicolas Mokus (2) - musvaage (18) + - Andrew Nelson (88) - Jens Hedegaard Nielsen (1) + - Roman Nigmatullin (8) + - Nick ODell (37) - Yagiz Olmez (4) - Matti Picus (9) - Diogo Pires (5) + - Ilhan Polat (96) - Zachary Potthoff (1) + - Tom M. Ragonneau (2) - Peter Ralph (1) + - Stephan Rave (1) + - Tyler Reddy (192) - redha2404 (2) + - Ritvik1sharma (1) + - Érico Nogueira Rolim (1) + - Heshy Roskes (1) - Pamphile Roy (34) - Mikhail Ryazanov (1) + - Sina Saber (1) + - Atsushi Sakai (1) - Clemens Schmid (1) + - Daniel Schmitz (17) - Moritz Schreiber (1) + - Dan Schult (91) - Searchingdays (1) + - Matias Senger (1) + - Scott Shambaugh (1) - Zhida Shang (1) + - Sheila-nk (4) - Romain Simon (2) + - Gagandeep Singh (31) - Albert Steppi (40) - Kai Striega (1) - Anushka Suyal (143) + - Alex Szatmary (1) - Svetlin Tassev (1) + - Ewout ter Hoeven (1) - Tibor Völcker (4) + - Kanishk Tiwari (1) + - Yusuke Toyama (1) + - Edgar Andrés Margffoy Tuay (124) - Adam Turner (2) + - Nicole Vadot (1) + - Andrew Valentine (1) - Christian Veenhuis (2) - vfdev (2) + - Pauli Virtanen (2) - Simon Waldherr (1) + - Stefan van der Walt (2) - Warren Weckesser (23) - Anreas Weh (1) - Benoît Wygas (2) + - Pavadol Yamsiri (3) + - ysard (1) + - Xiao Yuan (2) - Irwin Zaid (12) - Gang Zhao (1) - ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (10) A total of 149 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. ### [`v1.14.1`](https://github.com/scipy/scipy/releases/v1.14.1) [Compare Source](https://github.com/scipy/scipy/compare/v1.14.0...v1.14.1) # SciPy 1.14.1 Release Notes SciPy `1.14.1` adds support for Python `3.13`, including binary wheels on PyPI. Apart from that, it is a bug-fix release with no new features compared to `1.14.0`. # Authors - Name (commits) - h-vetinari (1) - Evgeni Burovski (1) - CJ Carey (2) - Lucas Colley (3) - Ralf Gommers (3) - Melissa Weber Mendonça (1) - Andrew Nelson (3) - Nick ODell (1) - Tyler Reddy (36) - Daniel Schmitz (1) - Dan Schult (4) - Albert Steppi (2) - Ewout ter Hoeven (1) - Tibor Völcker (2) + - Adam Turner (1) + - Warren Weckesser (2) - ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (1) A total of 17 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. ### [`v1.14.0`](https://github.com/scipy/scipy/releases/v1.14.0) [Compare Source](https://github.com/scipy/scipy/compare/v1.13.1...v1.14.0) # SciPy 1.14.0 Release Notes SciPy `1.14.0` is the culmination of 3 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.14.x branch, and on adding new features on the main branch. This release requires Python `3.10+` and NumPy `1.23.5` or greater. For running on PyPy, PyPy3 `6.0+` is required. # Highlights of this release - SciPy now supports the new Accelerate library introduced in macOS 13.3, and has wheels built against Accelerate for macOS >=14 resulting in significant performance improvements for many linear algebra operations. - A new method, `cobyqa`, has been added to `scipy.optimize.minimize` - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University. - `scipy.sparse.linalg.spsolve_triangular` is now more than an order of magnitude faster in many cases. # New features # `scipy.fft` improvements - A new function, `scipy.fft.prev_fast_len`, has been added. This function finds the largest composite of FFT radices that is less than the target length. It is useful for discarding a minimal number of samples before FFT. # `scipy.io` improvements - `wavfile` now supports reading and writing of `wav` files in the RF64 format, allowing files greater than 4 GB in size to be handled. # `scipy.constants` improvements - Experimental support for the array API standard has been added. # `scipy.interpolate` improvements - `scipy.interpolate.Akima1DInterpolator` now supports extrapolation via the `extrapolate` argument. # `scipy.optimize` improvements - `scipy.optimize.HessianUpdateStrategy` now also accepts square arrays for `init_scale`. - A new method, `cobyqa`, has been added to `scipy.optimize.minimize` - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University. - There are some performance improvements in `scipy.optimize.differential_evolution`. - `scipy.optimize.approx_fprime` now has linear space complexity. # `scipy.signal` improvements - `scipy.signal.minimum_phase` has a new argument `half`, allowing the provision of a filter of the same length as the linear-phase FIR filter coefficients and with the same magnitude spectrum. # `scipy.sparse` improvements - Sparse arrays now support 1D shapes in COO, DOK and CSR formats. These are all the formats we currently intend to support 1D shapes. Other sparse array formats raise an exception for 1D input. - Sparse array methods min/nanmin/argmin and max analogs now return 1D arrays. Results are still COO format sparse arrays for min/nanmin and dense `np.ndarray` for argmin. - Iterating over `csr_array` or `csc_array` yields 1D (CSC) arrays. - Sparse matrix and array objects improve their `repr` and `str` output. - A special case has been added to handle multiplying a `dia_array` by a scalar, which avoids a potentially costly conversion to CSR format. - `scipy.sparse.csgraph.yen` has been added, allowing usage of Yen's K-Shortest Paths algorithm on a directed on undirected graph. - Addition between DIA-format sparse arrays and matrices is now faster. - `scipy.sparse.linalg.spsolve_triangular` is now more than an order of magnitude faster in many cases. # `scipy.spatial` improvements - `Rotation` supports an alternative "scalar-first" convention of quaternion component ordering. It is available via the keyword argument `scalar_first` of `from_quat` and `as_quat` methods. - Some minor performance improvements for inverting of `Rotation` objects. # `scipy.special` improvements - Added `scipy.special.log_wright_bessel`, for calculation of the logarithm of Wright's Bessel function. - The relative error in `scipy.special.hyp2f1` calculations has improved substantially. - Improved behavior of `boxcox`, `inv_boxcox`, `boxcox1p`, and `inv_boxcox1p` by preventing premature overflow. # `scipy.stats` improvements - A new function `scipy.stats.power` can be used for simulating the power of a hypothesis test with respect to a specified alternative. - The Irwin-Hall (AKA Uniform Sum) distribution has been added as `scipy.stats.irwinhall`. - Exact p-value calculations of `scipy.stats.mannwhitneyu` are much faster and use less memory. - `scipy.stats.pearsonr` now accepts n-D arrays and computes the statistic along a specified `axis`. - `scipy.stats.kstat`, `scipy.stats.kstatvar`, and `scipy.stats.bartlett` are faster at performing calculations along an axis of a large n-D array. # Array API Standard Support *Experimental* support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing PyTorch, JAX, or CuPy arrays as array arguments. As of 1.14.0, there is support for - `scipy.cluster` - `scipy.fft` - `scipy.constants` - `scipy.special`: (select functions) - `scipy.special.log_ndtr` - `scipy.special.ndtr` - `scipy.special.ndtri` - `scipy.special.erf` - `scipy.special.erfc` - `scipy.special.i0` - `scipy.special.i0e` - `scipy.special.i1` - `scipy.special.i1e` - `scipy.special.gammaln` - `scipy.special.gammainc` - `scipy.special.gammaincc` - `scipy.special.logit` - `scipy.special.expit` - `scipy.special.entr` - `scipy.special.rel_entr` - `scipy.special.xlogy` - `scipy.special.chdtrc` - `scipy.stats`: (select functions) - `scipy.stats.describe` - `scipy.stats.moment` - `scipy.stats.skew` - `scipy.stats.kurtosis` - `scipy.stats.kstat` - `scipy.stats.kstatvar` - `scipy.stats.circmean` - `scipy.stats.circvar` - `scipy.stats.circstd` - `scipy.stats.entropy` - `scipy.stats.variation` - `scipy.stats.sem` - `scipy.stats.ttest_1samp` - `scipy.stats.pearsonr` - `scipy.stats.chisquare` - `scipy.stats.skewtest` - `scipy.stats.kurtosistest` - `scipy.stats.normaltest` - `scipy.stats.jarque_bera` - `scipy.stats.bartlett` - `scipy.stats.power_divergence` - `scipy.stats.monte_carlo_test` # Deprecated features - `scipy.stats.gstd`, `scipy.stats.chisquare`, and `scipy.stats.power_divergence` have deprecated support for masked array input. - `scipy.stats.linregress` has deprecated support for specifying both samples in one argument; `x` and `y` are to be provided as separate arguments. - The `conjtransp` method for `scipy.sparse.dok_array` and `scipy.sparse.dok_matrix` has been deprecated and will be removed in SciPy 1.16.0. - The option `quadrature="trapz"` in `scipy.integrate.quad_vec` has been deprecated in favour of `quadrature="trapezoid"` and will be removed in SciPy 1.16.0. - `scipy.special.{comb,perm}` have deprecated support for use of `exact=True` in conjunction with non-integral `N` and/or `k`. # Backwards incompatible changes - Many `scipy.stats` functions now produce a standardized warning message when an input sample is too small (e.g. zero size). Previously, these functions may have raised an error, emitted one or more less informative warnings, or emitted no warnings. In most cases, returned results are unchanged; in almost all cases the correct result is `NaN`. # Expired deprecations There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected: - Several previously deprecated methods for sparse arrays were removed: `asfptype`, `getrow`, `getcol`, `get_shape`, `getmaxprint`, `set_shape`, `getnnz`, and `getformat`. Additionally, the `.A` and `.H` attributes were removed. - `scipy.integrate.{simps,trapz,cumtrapz}` have been removed in favour of `simpson`, `trapezoid`, and `cumulative_trapezoid`. - The `tol` argument of `scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr}` has been removed in favour of `rtol`. Furthermore, the default value of `atol` for these functions has changed to `0.0`. - The `restrt` argument of `scipy.sparse.linalg.gmres` has been removed in favour of `restart`. - The `initial_lexsort` argument of `scipy.stats.kendalltau` has been removed. - The `cond` and `rcond` arguments of `scipy.linalg.pinv` have been removed. - The `even` argument of `scipy.integrate.simpson` has been removed. - The `turbo` and `eigvals` arguments from `scipy.linalg.{eigh,eigvalsh}` have been removed. - The `legacy` argument of `scipy.special.comb` has been removed. - The `hz`/`nyq` argument of `signal.{firls, firwin, firwin2, remez}` has been removed. - Objects that weren't part of the public interface but were accessible through deprecated submodules have been removed. - `float128`, `float96`, and object arrays now raise an error in `scipy.signal.medfilt` and `scipy.signal.order_filter`. - `scipy.interpolate.interp2d` has been replaced by an empty stub (to be removed completely in the future). - Coinciding with changes to function signatures (e.g. removal of a deprecated keyword), we had deprecated positional use of keyword arguments for the affected functions, which will now raise an error. Affected functions are: - `sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}` - `stats.kendalltau` - `linalg.pinv` - `integrate.simpson` - `linalg.{eigh,eigvalsh}` - `special.comb` - `signal.{firls, firwin, firwin2, remez}` # Other changes - SciPy now uses C17 as the C standard to build with, instead of C99. The C++ standard remains C++17. - macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported. This results in significant performance improvements for linear algebra operations, as well as smaller binary wheels. - Cross-compilation should be smoother and QEMU or similar is no longer needed to run the cross interpreter. - Experimental array API support for the JAX backend has been added to several parts of SciPy. # Authors - Name (commits) - h-vetinari (34) - Steven Adams (1) + - Max Aehle (1) + - Ataf Fazledin Ahamed (2) + - Luiz Eduardo Amaral (1) + - Trinh Quoc Anh (1) + - Miguel A. Batalla (7) + - Tim Beyer (1) + - Andrea Blengino (1) + - boatwrong (1) - Jake Bowhay (51) - Dietrich Brunn (2) - Evgeni Burovski (177) - Tim Butters (7) + - CJ Carey (5) - Sean Cheah (46) - Lucas Colley (73) - Giuseppe "Peppe" Dilillo (1) + - DWesl (2) - Pieter Eendebak (5) - Kenji S Emerson (1) + - Jonas Eschle (1) - fancidev (2) - Anthony Frazier (1) + - Ilan Gold (1) + - Ralf Gommers (125) - Rohit Goswami (28) - Ben Greiner (1) + - Lorenzo Gualniera (1) + - Matt Haberland (260) - Shawn Hsu (1) + - Budjen Jovan (3) + - Jozsef Kutas (1) - Eric Larson (3) - Gregory R. Lee (4) - Philip Loche (1) + - Christian Lorentzen (5) - Sijo Valayakkad Manikandan (2) + - marinelay (2) + - Nikolay Mayorov (1) - Nicholas McKibben (2) - Melissa Weber Mendonça (7) - João Mendes (1) + - Samuel Le Meur-Diebolt (1) + - Tomiță Militaru (2) + - Andrew Nelson (35) - Lysandros Nikolaou (1) - Nick ODell (5) + - Jacob Ogle (1) + - Pearu Peterson (1) - Matti Picus (5) - Ilhan Polat (9) - pwcnorthrop (3) + - Bharat Raghunathan (1) - Tom M. Ragonneau (2) + - Tyler Reddy (101) - Pamphile Roy (18) - Atsushi Sakai (9) - Daniel Schmitz (5) - Julien Schueller (2) + - Dan Schult (13) - Tomer Sery (7) - Scott Shambaugh (4) - Tuhin Sharma (1) + - Sheila-nk (4) - Skylake (1) + - Albert Steppi (215) - Kai Striega (6) - Zhibing Sun (2) + - Nimish Telang (1) + - toofooboo (1) + - tpl2go (1) + - Edgar Andrés Margffoy Tuay (44) - Andrew Valentine (1) - Valerix (1) + - Christian Veenhuis (1) - void (2) + - Warren Weckesser (3) - Xuefeng Xu (1) - Rory Yorke (1) - Xiao Yuan (1) - Irwin Zaid (35) - Elmar Zander (1) + - Zaikun ZHANG (1) - ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (4) + A total of 85 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. ### [`v1.13.1`](https://github.com/scipy/scipy/releases/v1.13.1) [Compare Source](https://github.com/scipy/scipy/compare/v1.13.0...v1.13.1) # SciPy 1.13.1 Release Notes SciPy `1.13.1` is a bug-fix release with no new features compared to `1.13.0`. The version of OpenBLAS shipped with the PyPI binaries has been increased to `0.3.27`. # Authors - Name (commits) - h-vetinari (1) - Jake Bowhay (2) - Evgeni Burovski (6) - Sean Cheah (2) - Lucas Colley (2) - DWesl (2) - Ralf Gommers (7) - Ben Greiner (1) + - Matt Haberland (2) - Gregory R. Lee (1) - Philip Loche (1) + - Sijo Valayakkad Manikandan (1) + - Matti Picus (1) - Tyler Reddy (62) - Atsushi Sakai (1) - Daniel Schmitz (2) - Dan Schult (3) - Scott Shambaugh (2) - Edgar Andrés Margffoy Tuay (1) A total of 19 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. ### [`v1.13.0`](https://github.com/scipy/scipy/releases/v1.13.0) [Compare Source](https://github.com/scipy/scipy/compare/v1.12.0...v1.13.0) # 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, :math:`\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. ### [`v1.12.0`](https://github.com/scipy/scipy/releases/v1.12.0) [Compare Source](https://github.com/scipy/scipy/compare/v1.11.4...v1.12.0) # SciPy 1.12.0 Release Notes SciPy `1.12.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.12.x branch, and on adding new features on the main branch. 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 - Experimental support for the array API standard has been added to part of `scipy.special`, and to all of `scipy.fft` and `scipy.cluster`. There are likely to be bugs and early feedback for usage with CuPy arrays, PyTorch tensors, and other array API compatible libraries is appreciated. Use the `SCIPY_ARRAY_API` environment variable for testing. - A new class, `ShortTimeFFT`, provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT. - Several new constructors have been added for sparse arrays, and many operations now additionally support sparse arrays, further facilitating the migration from sparse matrices. - A large portion of the `scipy.stats` API now has improved support for handling `NaN` values, masked arrays, and more fine-grained shape-handling. The accuracy and performance of a number of `stats` methods have been improved, and a number of new statistical tests and distributions have been added. # New features # `scipy.cluster` improvements - Experimental support added for the array API standard; PyTorch tensors, CuPy arrays and array API compatible array libraries are now accepted (GPU support is limited to functions with pure Python implementations). CPU arrays which can be converted to and from NumPy are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the `SCIPY_ARRAY_API` environment variable before importing `scipy`. This experimental support is still under development and likely to contain bugs - testing is very welcome. # `scipy.fft` improvements - Experimental support added for the array API standard; functions which are part of the `fft` array API standard extension module, as well as the Fast Hankel Transforms and the basic FFTs which are not in the extension module, now accept PyTorch tensors, CuPy arrays and array API compatible array libraries. CPU arrays which can be converted to and from NumPy arrays are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the `SCIPY_ARRAY_API` environment variable before importing `scipy`. This experimental support is still under development and likely to contain bugs - testing is very welcome. # `scipy.integrate` improvements - Added `scipy.integrate.cumulative_simpson` for cumulative quadrature from sampled data using Simpson's 1/3 rule. # `scipy.interpolate` improvements - New class `NdBSpline` represents tensor-product splines in N dimensions. This class only knows how to evaluate a tensor product given coefficients and knot vectors. This way it generalizes `BSpline` for 1D data to N-D, and parallels `NdPPoly` (which represents N-D tensor product polynomials). Evaluations exploit the localized nature of b-splines. - `NearestNDInterpolator.__call__` accepts `**query_options`, which are passed through to the `KDTree.query` call to find nearest neighbors. This allows, for instance, to limit the neighbor search distance and parallelize the query using the `workers` keyword. - `BarycentricInterpolator` now allows computing the derivatives. - It is now possible to change interpolation values in an existing `CloughTocher2DInterpolator` instance, while also saving the barycentric coordinates of interpolation points. # `scipy.linalg` improvements - Access to new low-level LAPACK functions is provided via `dtgsyl` and `stgsyl`. # `scipy.optimize` improvements - `scipy.optimize.isotonic_regression` has been added to allow nonparametric isotonic regression. - `scipy.optimize.nnls` is rewritten in Python and now implements the so-called fnnls or fast nnls, making it more efficient for high-dimensional problems. - The result object of `scipy.optimize.root` and `scipy.optimize.root_scalar` now reports the method used. - The `callback` method of `scipy.optimize.differential_evolution` can now be passed more detailed information via the `intermediate_results` keyword parameter. Also, the evolution `strategy` now accepts a callable for additional customization. The performance of `differential_evolution` has also been improved. - `scipy.optimize.minimize` method `Newton-CG` now supports functions that return sparse Hessian matrices/arrays for the `hess` parameter and is slightly more efficient. - `scipy.optimize.minimize` method `BFGS` now accepts an initial estimate for the inverse of the Hessian, which allows for more efficient workflows in some circumstances. The new parameter is `hess_inv0`. - `scipy.optimize.minimize` methods `CG`, `Newton-CG`, and `BFGS` now accept parameters `c1` and `c2`, allowing specification of the Armijo and curvature rule parameters, respectively. - `scipy.optimize.curve_fit` performance has improved due to more efficient memoization of the callable function. # `scipy.signal` improvements - `freqz`, `freqz_zpk`, and `group_delay` are now more accurate when `fs` has a default value. - The new class `ShortTimeFFT` provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT based on dual windows and provides more fine-grained control of the parametrization especially in regard to scaling and phase-shift. Functionality was implemented to ease working with signal and STFT chunks. A section has been added to the "SciPy User Guide" providing algorithmic details. The functions `stft`, `istft` and `spectrogram` have been marked as legacy. # `scipy.sparse` improvements - `sparse.linalg` iterative solvers `sparse.linalg.cg`, `sparse.linalg.cgs`, `sparse.linalg.bicg`, `sparse.linalg.bicgstab`, `sparse.linalg.gmres`, and `sparse.linalg.qmr` are rewritten in Python. - Updated vendored SuperLU version to `6.0.1`, along with a few additional fixes. - Sparse arrays have gained additional constructors: `eye_array`, `random_array`, `block_array`, and `identity`. `kron` and `kronsum` have been adjusted to additionally support operation on sparse arrays. - Sparse matrices now support a transpose with `axes=(1, 0)`, to mirror the `.T` method. - `LaplacianNd` now allows selection of the largest subset of eigenvalues, and additionally now supports retrieval of the corresponding eigenvectors. The performance of `LaplacianNd` has also been improved. - The performance of `dok_matrix` and `dok_array` has been improved, and their inheritance behavior should be more robust. - `hstack`, `vstack`, and `block_diag` now work with sparse arrays, and preserve the input sparse type. - A new function, `scipy.sparse.linalg.matrix_power`, has been added, allowing for exponentiation of sparse arrays. # `scipy.spatial` improvements - Two new methods were implemented for `spatial.transform.Rotation`: `__pow__` to raise a rotation to integer or fractional power and `approx_equal` to check if two rotations are approximately equal. - The method `Rotation.align_vectors` was extended to solve a constrained alignment problem where two vectors are required to be aligned precisely. Also when given a single pair of vectors, the algorithm now returns the rotation with minimal magnitude, which can be considered as a minor backward incompatible change. - A new representation for `spatial.transform.Rotation` called Davenport angles is available through `from_davenport` and `as_davenport` methods. - Performance improvements have been added to `distance.hamming` and `distance.correlation`. - Improved performance of `SphericalVoronoi` `sort_vertices_of_regions` and two dimensional area calculations. # `scipy.special` improvements - Added `scipy.special.stirling2` for computation of Stirling numbers of the second kind. Both exact calculation and an asymptotic approximation (the default) are supported via `exact=True` and `exact=False` (the default) respectively. - Added `scipy.special.betaincc` for computation of the complementary incomplete Beta function and `scipy.special.betainccinv` for computation of its inverse. - Improved precision of `scipy.special.betainc` and `scipy.special.betaincinv`. - Experimental support added for alternative backends: functions `scipy.special.log_ndtr`, `scipy.special.ndtr`, `scipy.special.ndtri`, `scipy.special.erf`, `scipy.special.erfc`, `scipy.special.i0`, `scipy.special.i0e`, `scipy.special.i1`, `scipy.special.i1e`, `scipy.special.gammaln`, `scipy.special.gammainc`, `scipy.special.gammaincc`, `scipy.special.logit`, and `scipy.special.expit` now accept PyTorch tensors and CuPy arrays. These features are still under development and likely to contain bugs, so they are disabled by default; enable them by setting a `SCIPY_ARRAY_API` environment variable to `1` before importing `scipy`. Testing is appreciated! # `scipy.stats` improvements - Added `scipy.stats.quantile_test`, a nonparametric test of whether a hypothesized value is the quantile associated with a specified probability. The `confidence_interval` method of the result object gives a confidence interval of the quantile. - `scipy.stats.sampling.FastGeneratorInversion` provides a convenient interface to fast random sampling via numerical inversion of distribution CDFs. - `scipy.stats.geometric_discrepancy` adds geometric/topological discrepancy metrics for random samples. - `scipy.stats.multivariate_normal` now has a `fit` method for fitting distribution parameters to data via maximum likelihood estimation. - `scipy.stats.bws_test` performs the Baumgartner-Weiss-Schindler test of whether two-samples were drawn from the same distribution. - `scipy.stats.jf_skew_t` implements the Jones and Faddy skew-t distribution. - `scipy.stats.anderson_ksamp` now supports a permutation version of the test using the `method` parameter. - The `fit` methods of `scipy.stats.halfcauchy`, `scipy.stats.halflogistic`, and `scipy.stats.halfnorm` are faster and more accurate. - `scipy.stats.beta` `entropy` accuracy has been improved for extreme values of distribution parameters. - The accuracy of `sf` and/or `isf` methods have been improved for several distributions: `scipy.stats.burr`, `scipy.stats.hypsecant`, `scipy.stats.kappa3`, `scipy.stats.loglaplace`, `scipy.stats.lognorm`, `scipy.stats.lomax`, `scipy.stats.pearson3`, `scipy.stats.rdist`, and `scipy.stats.pareto`. - The following functions now support parameters `axis`, `nan_policy`, and `keep_dims`: `scipy.stats.entropy`, `scipy.stats.differential_entropy`, `scipy.stats.variation`, `scipy.stats.ansari`, `scipy.stats.bartlett`, `scipy.stats.levene`, `scipy.stats.fligner`, `scipy.stats.circmean`, `scipy.stats.circvar`, `scipy.stats.circstd`, `scipy.stats.tmean`, `scipy.stats.tvar`, `scipy.stats.tstd`, `scipy.stats.tmin`, `scipy.stats.tmax`, and `scipy.stats.tsem`. - The `logpdf` and `fit` methods of `scipy.stats.skewnorm` have been improved. - The beta negative binomial distribution is implemented as `scipy.stats.betanbinom`. - Improved performance of `scipy.stats.invwishart` `rvs` and `logpdf`. - A source of intermediate overflow in `scipy.stats.boxcox_normmax` with `method='mle'` has been eliminated, and the returned value of `lmbda` is constrained such that the transformed data will not overflow. - `scipy.stats.nakagami` `stats` is more accurate and reliable. - A source of intermediate overflow in `scipy.norminvgauss.pdf` has been eliminated. - Added support for masked arrays to `scipy.stats.circmean`, `scipy.stats.circvar`, `scipy.stats.circstd`, and `scipy.stats.entropy`. - `scipy.stats.dirichlet` has gained a new covariance (`cov`) method. - Improved accuracy of `entropy` method of `scipy.stats.multivariate_t` for large degrees of freedom. - `scipy.stats.loggamma` has an improved `entropy` method. # Deprecated features - Error messages have been made clearer for objects that don't exist in the public namespace and warnings sharpened for private attributes that are not supposed to be imported at all. - `scipy.signal.cmplx_sort` has been deprecated and will be removed in SciPy 1.15. A replacement you can use is provided in the deprecation message. - Values the the argument `initial` of `scipy.integrate.cumulative_trapezoid` other than `0` and `None` are now deprecated. - `scipy.stats.rvs_ratio_uniforms` is deprecated in favour of `scipy.stats.sampling.RatioUniforms` - `scipy.integrate.quadrature` and `scipy.integrate.romberg` have been deprecated due to accuracy issues and interface shortcomings. They will be removed in SciPy 1.15. Please use `scipy.integrate.quad` instead. - Coinciding with upcoming changes to function signatures (e.g. removal of a deprecated keyword), we are deprecating positional use of keyword arguments for the affected functions, which will raise an error starting with SciPy 1.14. In some cases, this has delayed the originally announced removal date, to give time to respond to the second part of the deprecation. Affected functions are: - `linalg.{eigh, eigvalsh, pinv}` - `integrate.simpson` - `signal.{firls, firwin, firwin2, remez}` - `sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}` - `special.comb` - `stats.kendalltau` - All wavelet functions have been deprecated, as PyWavelets provides suitable implementations; affected functions are: `signal.{daub, qmf, cascade, morlet, morlet2, ricker, cwt}` - `scipy.integrate.trapz`, `scipy.integrate.cumtrapz`, and `scipy.integrate.simps` have been deprecated in favour of `scipy.integrate.trapezoid`, `scipy.integrate.cumulative_trapezoid`, and `scipy.integrate.simpson` respectively and will be removed in SciPy 1.14. - The `tol` argument of `scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk,gmres,lgmres,minres,qmr,tfqmr}` is now deprecated in favour of `rtol` and will be removed in SciPy 1.14. Furthermore, the default value of `atol` for these functions is due to change to `0.0` in SciPy 1.14. # Expired Deprecations There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected: - The `centered` keyword of `scipy.stats.qmc.LatinHypercube` has been removed. Use `scrambled=False` instead of `centered=True`. - `scipy.stats.binom_test` has been removed in favour of `scipy.stats.binomtest`. - In `scipy.stats.iqr`, the use of `scale='raw'` has been removed in favour of `scale=1`. - 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`. # Backwards incompatible changes # Other changes - The arguments used to compile and link SciPy are now available via `show_config`. # Authors - Name (commits) - endolith (1) - h-vetinari (34) - Tom Adamczewski (3) + - Anudeep Adiraju (1) + - akeemlh (1) - Alex Amadori (2) + - Raja Yashwanth Avantsa (2) + - Seth Axen (1) + - Ross Barnowski (1) - Dan Barzilay (1) + - Ashish Bastola (1) + - Christoph Baumgarten (2) - Ben Beasley (3) + - Doron Behar (1) - Peter Bell (1) - Sebastian Berg (1) - Ben Boeckel (1) + - David Boetius (1) + - Matt Borland (1) - Jake Bowhay (103) - Larry Bradley (1) + - Dietrich Brunn (5) - Evgeni Burovski (102) - Matthias Bussonnier (18) - CJ Carey (6) - Colin Carroll (1) + - Aadya Chinubhai (1) + - Luca Citi (1) - Lucas Colley (141) + - com3dian (1) + - Anirudh Dagar (4) - Danni (1) + - Dieter Werthmüller (1) - John Doe (2) + - Philippe DONNAT (2) + - drestebon (1) + - Thomas Duvernay (1) - elbarso (1) + - emilfrost (2) + - Paul Estano (8) + - Evandro (2) - Franz Király (1) + - Nikita Furin (1) + - gabrielthomsen (1) + - Lukas Geiger (9) + - Artem Glebov (22) + - Caden Gobat (1) - Ralf Gommers (127) - Alexander Goscinski (2) + - Rohit Goswami (2) + - Olivier Grisel (1) - Matt Haberland (244) - Charles Harris (1) - harshilkamdar (1) + - Alon Hovav (2) + - Gert-Ludwig Ingold (1) - Romain Jacob (1) + - jcwhitehead (1) + - Julien Jerphanion (13) - He Jia (1) - JohnWT (1) + - jokasimr (1) + - Evan W Jones (1) - Karen Róbertsdóttir (1) + - Ganesh Kathiresan (1) - Robert Kern (11) - Andrew Knyazev (4) - Uwe L. Korn (1) + - Rishi Kulkarni (1) - Kale Kundert (3) + - Jozsef Kutas (2) - Kyle0 (2) + - Robert Langefeld (1) + - Jeffrey Larson (1) + - Jessy Lauer (1) + - lciti (1) + - Hoang Le (1) + - Antony Lee (5) - Thilo Leitzbach (4) + - LemonBoy (2) + - Ellie Litwack (8) + - Thomas Loke (4) + - Malte Londschien (1) + - Christian Lorentzen (6) - Adam Lugowski (10) + - lutefiskhotdish (1) - mainak33 (1) + - Ben Mares (11) + - mart-mihkel (2) + - Mateusz Sokół (24) + - Nikolay Mayorov (4) - Nicholas McKibben (1) - Melissa Weber Mendonça (7) - Michał Górny (1) - Kat Mistberg (2) + - mkiffer (1) + - mocquin (1) + - Nicolas Mokus (2) + - Sturla Molden (1) - Roberto Pastor Muela (3) + - Bijay Nayak (1) + - Andrew Nelson (105) - Praveer Nidamaluri (3) + - Lysandros Nikolaou (2) - Dimitri Papadopoulos Orfanos (7) - Pablo Rodríguez Pérez (1) + - Dimitri Papadopoulos (2) - Tirth Patel (14) - Kyle Paterson (1) + - Paul (4) + - Yann Pellegrini (2) + - Matti Picus (4) - Ilhan Polat (36) - Pranav (1) + - Bharat Raghunathan (1) - Chris Rapson (1) + - Matteo Raso (4) - Tyler Reddy (215) - Martin Reinecke (1) - Tilo Reneau-Cardoso (1) + - resting-dove (2) + - Simon Segerblom Rex (4) - Lucas Roberts (2) - Pamphile Roy (31) - Feras Saad (3) + - Atsushi Sakai (3) - Masahiro Sakai (2) + - Omar Salman (14) - Andrej Savikin (1) + - Daniel Schmitz (55) - Dan Schult (19) - Scott Shambaugh (9) - Sheila-nk (2) + - Mauro Silberberg (3) + - Maciej Skorski (1) + - Laurent Sorber (1) + - Albert Steppi (28) - Kai Striega (1) - Saswat Susmoy (1) + - Alex Szatmary (1) + - Søren Fuglede Jørgensen (3) - othmane tamri (3) + - Ewout ter Hoeven (1) - Will Tirone (1) - TLeitzbach (1) + - Kevin Topolski (1) + - Edgar Andrés Margffoy Tuay (1) - Dipansh Uikey (1) + - Matus Valo (3) - Christian Veenhuis (2) - Nicolas Vetsch (1) + - Isaac Virshup (7) - Hielke Walinga (2) + - Stefan van der Walt (2) - Warren Weckesser (7) - Bernhard M. Wiedemann (4) - Levi John Wolf (1) - Xuefeng Xu (4) + - Rory Yorke (2) - YoussefAli1 (1) + - Irwin Zaid (4) + - Jinzhe Zeng (1) + - JIMMY ZHAO (1) + A total of 163 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. ### [`v1.11.4`](https://github.com/scipy/scipy/releases/v1.11.4) [Compare Source](https://github.com/scipy/scipy/compare/v1.11.3...v1.11.4) # SciPy 1.11.4 Release Notes SciPy `1.11.4` is a bug-fix release with no new features compared to `1.11.3`. # Authors - Name (commits) - Jake Bowhay (2) - Ralf Gommers (4) - Julien Jerphanion (2) - Nikolay Mayorov (2) - Melissa Weber Mendonça (1) - Tirth Patel (1) - Tyler Reddy (22) - Dan Schult (3) - Nicolas Vetsch (1) + A total of 9 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. ### [`v1.11.3`](https://github.com/scipy/scipy/releases/v1.11.3) [Compare Source](https://github.com/scipy/scipy/compare/v1.11.2...v1.11.3) # SciPy 1.11.3 Release Notes SciPy `1.11.3` is a bug-fix release with no new features compared to `1.11.2`. # Authors - Name (commits) - Jake Bowhay (2) - CJ Carey (1) - Colin Carroll (1) + - Anirudh Dagar (2) - drestebon (1) + - Ralf Gommers (5) - Matt Haberland (2) - Julien Jerphanion (1) - Uwe L. Korn (1) + - Ellie Litwack (2) - Andrew Nelson (5) - Bharat Raghunathan (1) - Tyler Reddy (37) - Søren Fuglede Jørgensen (2) - Hielke Walinga (1) + - Warren Weckesser (1) - Bernhard M. Wiedemann (1) A total of 17 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. ### [`v1.11.2`](https://github.com/scipy/scipy/releases/v1.11.2) [Compare Source](https://github.com/scipy/scipy/compare/v1.11.1...v1.11.2) # SciPy 1.11.2 Release Notes SciPy `1.11.2` is a bug-fix release with no new features compared to `1.11.1`. Python `3.12` and musllinux wheels are provided with this release. # Authors - Name (commits) - Evgeni Burovski (2) - CJ Carey (3) - Dieter Werthmüller (1) - elbarso (1) + - Ralf Gommers (2) - Matt Haberland (1) - jokasimr (1) + - Thilo Leitzbach (1) + - LemonBoy (1) + - Ellie Litwack (2) + - Sturla Molden (1) - Andrew Nelson (5) - Tyler Reddy (39) - Daniel Schmitz (6) - Dan Schult (2) - Albert Steppi (1) - Matus Valo (1) - Stefan van der Walt (1) A total of 18 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. ### [`v1.11.1`](https://github.com/scipy/scipy/releases/v1.11.1) [Compare Source](https://github.com/scipy/scipy/compare/v1.11.0...v1.11.1) # SciPy 1.11.1 Release Notes SciPy `1.11.1` is a bug-fix release with no new features compared to `1.11.0`. In particular, a licensing issue discovered after the release of `1.11.0` has been addressed. # Authors - Name (commits) - h-vetinari (1) - Robert Kern (1) - Ilhan Polat (4) - Tyler Reddy (8) A total of 4 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. ### [`v1.11.0`](https://github.com/scipy/scipy/releases/v1.11.0) [Compare Source](https://github.com/scipy/scipy/compare/v1.10.1...v1.11.0) # SciPy 1.11.0 Release Notes SciPy `1.11.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.11.x branch, and on adding new features on the main branch. This release requires Python `3.9+` and NumPy `1.21.6` or greater. For running on PyPy, PyPy3 `6.0+` is required. # Highlights of this release - Several `scipy.sparse` array API improvements, including `sparse.sparray`, a new public base class distinct from the older `sparse.spmatrix` class, proper 64-bit index support, and numerous deprecations paving the way to a modern sparse array experience. - `scipy.stats` added tools for survival analysis, multiple hypothesis testing, sensitivity analysis, and working with censored data. - A new function was added for quasi-Monte Carlo integration, and linear algebra functions `det` and `lu` now accept nD-arrays. - An `axes` argument was added broadly to `ndimage` functions, facilitating analysis of stacked image data. # New features # `scipy.integrate` improvements - Added `scipy.integrate.qmc_quad` for quasi-Monte Carlo integration. - For an even number of points, `scipy.integrate.simpson` now calculates a parabolic segment over the last three points which gives improved accuracy over the previous implementation. # `scipy.cluster` improvements - `disjoint_set` has a new method `subset_size` for providing the size of a particular subset. # `scipy.constants` improvements - The `quetta`, `ronna`, `ronto`, and `quecto` SI prefixes were added. # `scipy.linalg` improvements - `scipy.linalg.det` is improved and now accepts nD-arrays. - `scipy.linalg.lu` is improved and now accepts nD-arrays. With the new `p_indices` switch the output permutation argument can be 1D `(n,)` permutation index instead of the full `(n, n)` array. # `scipy.ndimage` improvements - `axes` argument was added to `rank_filter`, `percentile_filter`, `median_filter`, `uniform_filter`, `minimum_filter`, `maximum_filter`, and `gaussian_filter`, which can be useful for processing stacks of image data. # `scipy.optimize` improvements - `scipy.optimize.linprog` now passes unrecognized options directly to HiGHS. - `scipy.optimize.root_scalar` now uses Newton's method to be used without providing `fprime` and the `secant` method to be used without a second guess. - `scipy.optimize.lsq_linear` now accepts `bounds` arguments of type `scipy.optimize.Bounds`. - `scipy.optimize.minimize` `method='cobyla'` now supports simple bound constraints. - Users can opt into a new callback interface for most methods of `scipy.optimize.minimize`: If the provided callback callable accepts a single keyword argument, `intermediate_result`, `scipy.optimize.minimize` now passes both the current solution and the optimal value of the objective function to the callback as an instance of `scipy.optimize.OptimizeResult`. It also allows the user to terminate optimization by raising a `StopIteration` exception from the callback function. `scipy.optimize.minimize` will return normally, and the latest solution information is provided in the result object. - `scipy.optimize.curve_fit` now supports an optional `nan_policy` argument. - `scipy.optimize.shgo` now has parallelization with the `workers` argument, symmetry arguments that can improve performance, class-based design to improve usability, and generally improved performance. # `scipy.signal` improvements - `istft` has an improved warning message when the NOLA condition fails. # `scipy.sparse` improvements - A new public base class `scipy.sparse.sparray` was introduced, allowing further extension of the sparse array API (such as the support for 1-dimensional sparse arrays) without breaking backwards compatibility. `isinstance(x, scipy.sparse.sparray)` to select the new sparse array classes, while `isinstance(x, scipy.sparse.spmatrix)` selects only the old sparse matrix classes. - Division of sparse arrays by a dense array now returns sparse arrays. - `scipy.sparse.isspmatrix` now only returns `True` for the sparse matrices instances. `scipy.sparse.issparse` now has to be used instead to check for instances of sparse arrays or instances of sparse matrices. - Sparse arrays constructed with int64 indices will no longer automatically downcast to int32. - The `argmin` and `argmax` methods now return the correct result when explicit zeros are present. # `scipy.sparse.linalg` improvements - dividing `LinearOperator` by a number now returns a `_ScaledLinearOperator` - `LinearOperator` now supports right multiplication by arrays - `lobpcg` should be more efficient following removal of an extraneous QR decomposition. # `scipy.spatial` improvements - Usage of new C++ backend for additional distance metrics, the majority of which will see substantial performance improvements, though a few minor regressions are known. These are focused on distances between boolean arrays. # `scipy.special` improvements - The factorial functions `factorial`, `factorial2` and `factorialk` were made consistent in their behavior (in terms of dimensionality, errors etc.). Additionally, `factorial2` can now handle arrays with `exact=True`, and `factorialk` can handle arrays. # `scipy.stats` improvements ## New Features - `scipy.stats.sobol_indices`, a method to compute Sobol' sensitivity indices. - `scipy.stats.dunnett`, which performs Dunnett's test of the means of multiple experimental groups against the mean of a control group. - `scipy.stats.ecdf` for computing the empirical CDF and complementary CDF (survival function / SF) from uncensored or right-censored data. This function is also useful for survival analysis / Kaplan-Meier estimation. - `scipy.stats.logrank` to compare survival functions underlying samples. - `scipy.stats.false_discovery_control` for adjusting p-values to control the false discovery rate of multiple hypothesis tests using the Benjamini-Hochberg or Benjamini-Yekutieli procedures. - `scipy.stats.CensoredData` to represent censored data. It can be used as input to the `fit` method of univariate distributions and to the new `ecdf` function. - Filliben's goodness of fit test as `method='Filliben'` of `scipy.stats.goodness_of_fit`. - `scipy.stats.ttest_ind` has a new method, `confidence_interval` for computing a confidence interval of the difference between means. - `scipy.stats.MonteCarloMethod`, `scipy.stats.PermutationMethod`, and `scipy.stats.BootstrapMethod` are new classes to configure resampling and/or Monte Carlo versions of hypothesis tests. They can currently be used with `scipy.stats.pearsonr`. ## Statistical Distributions - Added the von-Mises Fisher distribution as `scipy.stats.vonmises_fisher`. This distribution is the most common analogue of the normal distribution on the unit sphere. - Added the relativistic Breit-Wigner distribution as `scipy.stats.rel_breitwigner`. It is used in high energy physics to model resonances. - Added the Dirichlet multinomial distribution as `scipy.stats.dirichlet_multinomial`. - Improved the speed and precision of several univariate statistical distributions. - `scipy.stats.anglit` `sf` - `scipy.stats.beta` `entropy` - `scipy.stats.betaprime` `cdf`, `sf`, `ppf` - `scipy.stats.chi` `entropy` - `scipy.stats.chi2` `entropy` - `scipy.stats.dgamma` `entropy`, `cdf`, `sf`, `ppf`, and `isf` - `scipy.stats.dweibull` `entropy`, `sf`, and `isf` - `scipy.stats.exponweib` `sf` and `isf` - `scipy.stats.f` `entropy` - `scipy.stats.foldcauchy` `sf` - `scipy.stats.foldnorm` `cdf` and `sf` - `scipy.stats.gamma` `entropy` - `scipy.stats.genexpon` `ppf`, `isf`, `rvs` - `scipy.stats.gengamma` `entropy` - `scipy.stats.geom` `entropy` - `scipy.stats.genlogistic` `entropy`, `logcdf`, `sf`, `ppf`, and `isf` - `scipy.stats.genhyperbolic` `cdf` and `sf` - `scipy.stats.gibrat` `sf` and `isf` - `scipy.stats.gompertz` `entropy`, `sf`. and `isf` - `scipy.stats.halflogistic` `sf`, and `isf` - `scipy.stats.halfcauchy` `sf` and `isf` - `scipy.stats.halfnorm` `cdf`, `sf`, and `isf` - `scipy.stats.invgamma` `entropy` - `scipy.stats.invgauss` `entropy` - `scipy.stats.johnsonsb` `pdf`, `cdf`, `sf`, `ppf`, and `isf` - `scipy.stats.johnsonsu` `pdf`, `sf`, `isf`, and `stats` - `scipy.stats.lognorm` `fit` - `scipy.stats.loguniform` `entropy`, `logpdf`, `pdf`, `cdf`, `ppf`, and `stats` - `scipy.stats.maxwell` `sf` and `isf` - `scipy.stats.nakagami` `entropy` - `scipy.stats.powerlaw` `sf` - `scipy.stats.powerlognorm` `logpdf`, `logsf`, `sf`, and `isf` - `scipy.stats.powernorm` `sf` and `isf` - `scipy.stats.t` `entropy`, `logpdf`, and `pdf` - `scipy.stats.truncexpon` `sf`, and `isf` - `scipy.stats.truncnorm` `entropy` - `scipy.stats.truncpareto` `fit` - `scipy.stats.vonmises` `fit` - `scipy.stats.multivariate_t` now has `cdf` and `entropy` methods. - `scipy.stats.multivariate_normal`, `scipy.stats.matrix_normal`, and `scipy.stats.invwishart` now have an `entropy` method. ## Other Improvements - `scipy.stats.monte_carlo_test` now supports multi-sample statistics. - `scipy.stats.bootstrap` can now produce one-sided confidence intervals. - `scipy.stats.rankdata` performance was improved for `method=ordinal` and `method=dense`. - `scipy.stats.moment` now supports non-central moment calculation. - `scipy.stats.anderson` now supports the `weibull_min` distribution. - `scipy.stats.sem` and `scipy.stats.iqr` now support `axis`, `nan_policy`, and masked array input. # Deprecated features - Multi-Ellipsis sparse matrix indexing has been deprecated and will be removed in SciPy 1.13. - Several methods were deprecated for sparse arrays: `asfptype`, `getrow`, `getcol`, `get_shape`, `getmaxprint`, `set_shape`, `getnnz`, and `getformat`. Additionally, the `.A` and `.H` attributes were deprecated. Sparse matrix types are not affected. - The `scipy.linalg` functions `tri`, `triu` & `tril` are deprecated and will be removed in SciPy 1.13. Users are recommended to use the NumPy versions of these functions with identical names. - The `scipy.signal` functions `bspline`, `quadratic` & `cubic` are deprecated and will be removed in SciPy 1.13. Users are recommended to use `scipy.interpolate.BSpline` instead. - The `even` keyword of `scipy.integrate.simpson` is deprecated and will be removed in SciPy 1.13.0. Users should leave this as the default as this gives improved accuracy compared to the other methods. - Using `exact=True` when passing integers in a float array to `factorial` is deprecated and will be removed in SciPy 1.13.0. - float128 and object dtypes are deprecated for `scipy.signal.medfilt` and `scipy.signal.order_filter` - The functions `scipy.signal.{lsim2, impulse2, step2}` had long been deprecated in documentation only. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0. - Importing window functions directly from `scipy.window` has been soft deprecated since SciPy 1.1.0. They now raise a `DeprecationWarning` and will be removed in SciPy 1.13.0. Users should instead import them from `scipy.signal.window` or use the convenience function `scipy.signal.get_window`. # Backwards incompatible changes - The default for the `legacy` keyword of `scipy.special.comb` has changed from `True` to `False`, as announced since its introduction. # Expired Deprecations There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected: - The `n` keyword has been removed from `scipy.stats.moment`. - The `alpha` keyword has been removed from `scipy.stats.interval`. - The misspelt `gilbrat` distribution has been removed (use `scipy.stats.gibrat`). - The deprecated spelling of the `kulsinski` distance metric has been removed (use `scipy.spatial.distance.kulczynski1`). - The `vertices` keyword of `scipy.spatial.Delauney.qhull` has been removed (use simplices). - The `residual` property of `scipy.sparse.csgraph.maximum_flow` has been removed (use `flow`). - The `extradoc` keyword of `scipy.stats.rv_continuous`, `scipy.stats.rv_discrete` and `scipy.stats.rv_sample` has been removed. - The `sym_pos` keyword of `scipy.linalg.solve` has been removed. - The `scipy.optimize.minimize` function now raises an error for `x0` with `x0.ndim > 1`. - In `scipy.stats.mode`, the default value of `keepdims` is now `False`, and support for non-numeric input has been removed. - The function `scipy.signal.lsim` does not support non-uniform time steps anymore. # Other changes - Rewrote the source build docs and restructured the contributor guide. - Improved support for cross-compiling with meson build system. - MyST-NB notebook infrastructure has been added to our documentation. # Authors - h-vetinari (69) - Oriol Abril-Pla (1) + - Tom Adamczewski (1) + - Anton Akhmerov (13) - Andrey Akinshin (1) + - alice (1) + - Oren Amsalem (1) - Ross Barnowski (13) - Christoph Baumgarten (2) - Dawson Beatty (1) + - Doron Behar (1) + - Peter Bell (1) - John Belmonte (1) + - boeleman (1) + - Jack Borchanian (1) + - Matt Borland (3) + - Jake Bowhay (41) - Larry Bradley (1) + - Sienna Brent (1) + - Matthew Brett (1) - Evgeni Burovski (39) - Matthias Bussonnier (2) - Maria Cann (1) + - Alfredo Carella (1) + - CJ Carey (34) - Hood Chatham (2) - Anirudh Dagar (3) - Alberto Defendi (1) + - Pol del Aguila (1) + - Hans Dembinski (1) - Dennis (1) + - Vinayak Dev (1) + - Thomas Duvernay (1) - DWesl (4) - Stefan Endres (66) - Evandro (1) + - Tom Eversdijk (2) + - Isuru Fernando (1) - Franz Forstmayr (4) - Joseph Fox-Rabinovitz (1) - Stefano Frazzetto (1) + - Neil Girdhar (1) - Caden Gobat (1) + - Ralf Gommers (153) - GonVas (1) + - Marco Gorelli (1) - Brett Graham (2) + - Matt Haberland (388) - harshvardhan2707 (1) + - Alex Herbert (1) + - Guillaume Horel (1) - Geert-Jan Huizing (1) + - Jakob Jakobson (2) - Julien Jerphanion (10) - jyuv (2) - Rajarshi Karmakar (1) + - Ganesh Kathiresan (3) + - Robert Kern (4) - Andrew Knyazev (4) - Sergey Koposov (1) - Rishi Kulkarni (2) + - Eric Larson (1) - Zoufiné Lauer-Bare (2) + - Antony Lee (3) - Gregory R. Lee (8) - Guillaume Lemaitre (2) + - lilinjie (2) + - Yannis Linardos (1) + - Christian Lorentzen (5) - Loïc Estève (1) - Adam Lugowski (1) + - Charlie Marsh (2) + - Boris Martin (1) + - Nicholas McKibben (11) - Melissa Weber Mendonça (58) - Michał Górny (1) + - Jarrod Millman (5) - Stefanie Molin (2) + - Mark W. Mueller (1) + - mustafacevik (1) + - Takumasa N (1) + - nboudrie (1) - Andrew Nelson (112) - Nico Schlömer (4) - Lysandros Nikolaou (2) + - Kyle Oman (1) - OmarManzoor (2) + - Simon Ott (1) + - Geoffrey Oxberry (1) + - Geoffrey M. Oxberry (2) + - Sravya papaganti (1) + - Tirth Patel (2) - Ilhan Polat (32) - Quentin Barthélemy (1) - Matteo Raso (12) + - Tyler Reddy (143) - Lucas Roberts (1) - Pamphile Roy (225) - Jordan Rupprecht (1) + - Atsushi Sakai (11) - Omar Salman (7) + - Leo Sandler (1) + - Ujjwal Sarswat (3) + - Saumya (1) + - Daniel Schmitz (79) - Henry Schreiner (2) + - Dan Schult (8) + - Eli Schwartz (6) - Tomer Sery (2) + - Scott Shambaugh (10) + - Gagandeep Singh (1) - Ethan Steinberg (6) + - stepeos (2) + - Albert Steppi (3) - Strahinja Lukić (1) - Kai Striega (4) - suen-bit (1) + - Tartopohm (2) - Logan Thomas (2) + - Jacopo Tissino (1) + - Matus Valo (12) + - Jacob Vanderplas (2) - Christian Veenhuis (1) + - Isaac Virshup (3) - Stefan van der Walt (14) - Warren Weckesser (63) - windows-server-2003 (1) - Levi John Wolf (3) - Nobel Wong (1) + - Benjamin Yeh (1) + - Rory Yorke (1) - Younes (2) + - Zaikun ZHANG (1) + - Alex Zverianskii (1) + A total of 134 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. ### [`v1.10.1`](https://github.com/scipy/scipy/releases/v1.10.1) [Compare Source](https://github.com/scipy/scipy/compare/v1.10.0...v1.10.1) # SciPy 1.10.1 Release Notes SciPy `1.10.1` is a bug-fix release with no new features compared to `1.10.0`. # Authors - Name (commits) - alice (1) + - Matt Borland (2) + - Evgeni Burovski (2) - CJ Carey (1) - Ralf Gommers (9) - Brett Graham (1) + - Matt Haberland (5) - Alex Herbert (1) + - Ganesh Kathiresan (2) + - Rishi Kulkarni (1) + - Loïc Estève (1) - Michał Górny (1) + - Jarrod Millman (1) - Andrew Nelson (4) - Tyler Reddy (50) - Pamphile Roy (2) - Eli Schwartz (2) - Tomer Sery (1) + - Kai Striega (1) - Jacopo Tissino (1) + - windows-server-2003 (1) A total of 21 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. </details> --- ### Configuration 📅 **Schedule**: At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
renovate-bot added 1 commit 2023-06-26 01:31:19 +00:00
chore(deps): update dependency scipy to ~1.11
Some checks failed
renovate/artifacts Artifact file update failure
gitea-physics/pdme/pipeline/pr-master There was a failure building this commit
75794f6d47
deepak was assigned by renovate-bot 2023-06-26 01:31:19 +00:00
Author
Owner

⚠ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: poetry.lock
The currently activated Python version 3.10.2 is not supported by the project (>=3.8.1,<3.10).
Trying to find and use a compatible version. 

  NoCompatiblePythonVersionFound

  Poetry was unable to find a compatible version. If you have one, you can explicitly use it via the "env use" command.

  at /usr/local/poetry/1.1.13/venv/lib/python3.10/site-packages/poetry/utils/env.py:768 in create_venv
       764│                     python_minor = ".".join(python_patch.split(".")[:2])
       765│                     break
       766│ 
       767│             if not executable:
    →  768│                 raise NoCompatiblePythonVersionFound(
       769│                     self._poetry.package.python_versions
       770│                 )
       771│ 
       772│         if root_venv:


### ⚠ Artifact update problem Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens: - any of the package files in this branch needs updating, or - the branch becomes conflicted, or - you click the rebase/retry checkbox if found above, or - you rename this PR's title to start with "rebase!" to trigger it manually The artifact failure details are included below: ##### File name: poetry.lock ``` The currently activated Python version 3.10.2 is not supported by the project (>=3.8.1,<3.10). Trying to find and use a compatible version. NoCompatiblePythonVersionFound Poetry was unable to find a compatible version. If you have one, you can explicitly use it via the "env use" command. at /usr/local/poetry/1.1.13/venv/lib/python3.10/site-packages/poetry/utils/env.py:768 in create_venv 764│ python_minor = ".".join(python_patch.split(".")[:2]) 765│ break 766│ 767│ if not executable: → 768│ raise NoCompatiblePythonVersionFound( 769│ self._poetry.package.python_versions 770│ ) 771│ 772│ if root_venv: ```
renovate-bot force-pushed renovate/scipy-1.x from 75794f6d47 to b1e8095bac 2023-07-24 01:31:10 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency scipy to ~1.11 to chore(deps): update dependency scipy to ~1.12 2024-01-21 01:31:06 +00:00
renovate-bot force-pushed renovate/scipy-1.x from b1e8095bac to 630a860e5c 2024-01-21 01:31:07 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency scipy to ~1.12 to chore(deps): update dependency scipy to ~1.13 2024-04-03 01:31:20 +00:00
renovate-bot force-pushed renovate/scipy-1.x from 630a860e5c to 772c57f812 2024-04-03 01:31:22 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency scipy to ~1.13 to chore(deps): update dependency scipy to ~1.14 2024-06-25 01:31:31 +00:00
renovate-bot force-pushed renovate/scipy-1.x from 772c57f812 to dd22690126 2024-06-25 01:31:32 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency scipy to ~1.14 to chore(deps): update dependency scipy to ~1.15 2025-01-04 01:31:24 +00:00
renovate-bot force-pushed renovate/scipy-1.x from dd22690126 to 9eca2e361e 2025-01-04 01:31:25 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency scipy to ~1.15 to chore(deps): update dependency scipy to ~1.16 2025-06-23 01:32:05 +00:00
renovate-bot force-pushed renovate/scipy-1.x from 9eca2e361e to 86f11272c4 2025-06-23 01:32:06 +00:00 Compare
Some checks failed
renovate/artifacts Artifact file update failure
gitea-physics/pdme/pipeline/pr-master There was a failure building this commit
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/scipy-1.x:renovate/scipy-1.x
git checkout renovate/scipy-1.x
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: physics/pdme#29