Update dependency scipy to ~=1.15.0,<1.16.0 #85

Closed
Renovate wants to merge 1 commits from renovate/scipy-1.x into dev
Collaborator

This PR contains the following updates:

Package Update Change
scipy minor ~=1.13.0,<1.14.0 -> ~=1.15.0,<1.16.0

Release Notes

scipy/scipy (scipy)

v1.15.0: SciPy 1.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: SciPy 1.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: SciPy 1.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.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

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, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [scipy](https://github.com/scipy/scipy) | minor | `~=1.13.0,<1.14.0` -> `~=1.15.0,<1.16.0` | --- ### Release Notes <details> <summary>scipy/scipy (scipy)</summary> ### [`v1.15.0`](https://github.com/scipy/scipy/releases/tag/v1.15.0): SciPy 1.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/tag/v1.14.1): SciPy 1.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/tag/v1.14.0): SciPy 1.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. </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **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, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4zNS4wIiwidXBkYXRlZEluVmVyIjoiMzYuMzUuMCIsInRhcmdldEJyYW5jaCI6ImRldiJ9-->
Renovate added 1 commit 2025-01-03 16:31:25 +02:00
Renovate scheduled this pull request to auto merge when all checks succeed 2025-01-03 16:31:26 +02:00
profitroll closed this pull request 2025-01-04 18:30:10 +02:00
Author
Collaborator

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update (~=1.15.0,<1.16.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

### Renovate Ignore Notification Because you closed this PR without merging, Renovate will ignore this update (~=1.15.0,<1.16.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the `ignoreDeps` array of your Renovate config. If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

Pull request closed

Sign in to join this conversation.
No reviewers
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: profitroll/PhotosAPI#85
No description provided.