SciPy library main repository
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.
2.0.0
.scipy.stats
functions have gained support for additional
axis
, nan_policy
, and keepdims
arguments. scipy.stats
also
has several performance and accuracy improvements.scipy.integrate
improvementsterminal
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
improvementsscipy.io.wavfile.write
has improved dtype
input validation.scipy.interpolate
improvementsinterpolate.Akima1DInterpolator
, available via the new method
argument.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
.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
improvementsfs
).scipy.sparse
improvementscoo_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.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
improvementsvoronoi_plot_2d
now draws Voronoi edges to infinity more clearly
when the aspect ratio is skewed.scipy.special
improvementsAMOS
, specfun
, and cdflib
libraries
that the majority of special functions depend on, is ported to Cython/C.factorialk
now also supports faster, approximate
calculation using exact=False
.scipy.stats
improvementsscipy.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
.moment
calculations for scipy.stats.powerlaw
are now more
accurate.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.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
.n
together with exact=True
are deprecated for
scipy.special.factorial
.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}
.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 indexingscipy.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}
.scipy.special.factorial
with exact=True
now raise an
error.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.scipy.stats.moment
has been renamed to order
while maintaining backward compatibility.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.
Note: SciPy 1.13.0
is not released yet!
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
.
This release requires Python 3.9+ and NumPy 1.22.4 or greater.
For running on PyPy, PyPy3 6.0+ is required.
2.0.0
.scipy.stats
functions have gained support for additional
axis
, nan_policy
, and keepdims
arguments. scipy.stats
also
has several performance and accuracy improvements.scipy.integrate
improvementsterminal
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
improvementsscipy.io.wavfile.write
has improved dtype
input validation.scipy.interpolate
improvementsinterpolate.Akima1DInterpolator
, available via the new method
argument.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
.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
improvementsfs
).scipy.sparse
improvementscoo_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.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
improvementsvoronoi_plot_2d
now draws Voronoi edges to infinity more clearly
when the aspect ratio is skewed.scipy.special
improvementsAMOS
, specfun
, and cdflib
libraries
that the majority of special functions depend on, is ported to Cython/C.factorialk
now also supports faster, approximate
calculation using exact=False
.scipy.stats
improvementsscipy.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
.moment
calculations for scipy.stats.powerlaw
are now more
accurate.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.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
.scipy.stats.moment
has been renamed to order
while maintaining backward compatibility.A total of 91 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.
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.
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.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.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.scipy.cluster
improvementsSCIPY_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
improvementsfft
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
improvementsscipy.integrate.cumulative_simpson
for cumulative quadrature
from sampled data using Simpson's 1/3 rule.scipy.interpolate
improvementsNdBSpline
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.CloughTocher2DInterpolator
instance, while also saving the barycentric
coordinates of interpolation points.scipy.linalg
improvementsdtgsyl
and
stgsyl
.scipy.optimize
improvementsscipy.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.scipy.optimize.root
and scipy.optimize.root_scalar
now reports the method used.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
improvementsfreqz
, freqz_zpk
, and group_delay
are now more accurate
when fs
has a default value.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
improvementssparse.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.6.0.1
, along with a few additional
fixes.eye_array
,
random_array
, block_array
, and identity
. kron
and kronsum
have been adjusted to additionally support operation on sparse arrays.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.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.scipy.sparse.linalg.matrix_power
, has been added, allowing
for exponentiation of sparse arrays.scipy.spatial
improvementsspatial.transform.Rotation
:
__pow__
to raise a rotation to integer or fractional power and
approx_equal
to check if two rotations are approximately equal.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.spatial.transform.Rotation
called Davenport
angles is available through from_davenport
and as_davenport
methods.distance.hamming
and
distance.correlation
.SphericalVoronoi
sort_vertices_of_regions
and two dimensional area calculations.scipy.special
improvementsscipy.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.scipy.special.betaincc
for computation of the complementary
incomplete Beta function and scipy.special.betainccinv
for computation of
its inverse.scipy.special.betainc
and scipy.special.betaincinv
.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
improvementsscipy.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.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.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
.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
.logpdf
and fit
methods of scipy.stats.skewnorm
have been improved.scipy.stats.betanbinom
.scipy.stats.invwishart
rvs
and logpdf
.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.scipy.norminvgauss.pdf
has been eliminated.scipy.stats.circmean
, scipy.stats.circvar
,
scipy.stats.circstd
, and scipy.stats.entropy
.scipy.stats.dirichlet
has gained a new covariance (cov
) method.entropy
method of scipy.stats.multivariate_t
for large
degrees of freedom.scipy.stats.loggamma
has an improved entropy
method.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.
There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:
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
.scipy.stats.iqr
, the use of scale='raw'
has been removed in favour
of scale=1
.numpy.histogram
exposed by scipy.histogram
, have
been removed from SciPy's main namespace. Please use the functions directly
from numpy
.show_config
.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.
Note: SciPy 1.12.0
is not released yet!
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.
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.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.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.scipy.cluster
improvementsSCIPY_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
improvementsfft
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
improvementsscipy.integrate.cumulative_simpson
for cumulative quadrature
from sampled data using Simpson's 1/3 rule.scipy.interpolate
improvementsNdBSpline
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.CloughTocher2DInterpolator
instance, while also saving the barycentric
coordinates of interpolation points.scipy.linalg
improvementsdtgsyl
and
stgsyl
.scipy.ndimage
improvementsscipy.optimize
improvementsscipy.optimize.nnls
is rewritten in Python and now implements the so-called
fnnls or fast nnls.scipy.optimize.root
and scipy.optimize.root_scalar
now reports the method used.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.minimize
method Newton-CG
has been made slightly more efficient.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
.minimize
methods CG
, Newton-CG
, and BFGS
now accept parameters
c1
and c2
, allowing specification of the Armijo and curvature rule
parameters, respectively.curve_fit
performance has improved due to more efficient memoization
of the callable function.isotonic_regression
has been added to allow nonparametric isotonic
regression.scipy.signal
improvementsfreqz
, freqz_zpk
, and group_delay
are now more accurate
when fs
has a default value.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
improvementssparse.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.6.0.1
, along with a few additional
fixes.eye_array
,
random_array
, block_array
, and identity
. kron
and kronsum
have been adjusted to additionally support operation on sparse arrays.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.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.scipy.sparse.linalg.matrix_power
, has been added, allowing
for exponentiation of sparse arrays.scipy.spatial
improvementsspatial.transform.Rotation
:
__pow__
to raise a rotation to integer or fractional power and
approx_equal
to check if two rotations are approximately equal.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.spatial.transform.Rotation
called Davenport
angles is available through from_davenport
and as_davenport
methods.distance.hamming
and
distance.correlation
.SphericalVoronoi
sort_vertices_of_regions
and two dimensional area calculations.scipy.special
improvementsscipy.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.scipy.special.betaincc
for computation of the complementary incomplete Beta function and scipy.special.betainccinv
for computation of its inverse.scipy.special.betainc
and scipy.special.betaincinv
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
improvementsscipy.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.wasserstein_distance
now computes the Wasserstein distance
in the multidimensional case.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.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.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
.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.cirmean,
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`.logpdf
and fit
methods of scipy.stats.skewnorm
have been improved.scipy.stats.betanbinom
.scipy.stats.invwishart
rvs
and logpdf
have been improved.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.scipy.norminvgauss.pdf
has been eliminated.stats.circmean
, stats.circvar
,
stats.circstd
, and stats.entropy
.dirichlet
has gained a new covariance (cov
) method.multivariate_t
entropy with large degrees of
freedom.loggamma
has an improved entropy
method.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.14. 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.14. 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.
There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:
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
.scipy.stats.iqr
, the use of scale='raw'
has been removed in favour
of scale=1
.show_config
.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.
Note: SciPy 1.12.0
is not released yet!
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.
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.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.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.scipy.cluster
improvementsSCIPY_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
improvementsfft
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
improvementsscipy.integrate.cumulative_simpson
for cumulative quadrature
from sampled data using Simpson's 1/3 rule.scipy.interpolate
improvementsNdBSpline
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.CloughTocher2DInterpolator
instance, while also saving the barycentric
coordinates of interpolation points.scipy.linalg
improvementsdtgsyl
and
stgsyl
.scipy.ndimage
improvementsscipy.optimize
improvementsscipy.optimize.nnls
is rewritten in Python and now implements the so-called
fnnls or fast nnls.scipy.optimize.root
and scipy.optimize.root_scalar
now reports the method used.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.minimize
method Newton-CG
has been made slightly more efficient.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
.minimize
methods CG
, Newton-CG
, and BFGS
now accept parameters
c1
and c2
, allowing specification of the Armijo and curvature rule
parameters, respectively.curve_fit
performance has improved due to more efficient memoization
of the callable function.isotonic_regression
has been added to allow nonparametric isotonic
regression.scipy.signal
improvementsfreqz
, freqz_zpk
, and group_delay
are now more accurate
when fs
has a default value.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
improvementssparse.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.6.0.1
, along with a few additional
fixes.eye_array
,
random_array
, block_array
, and identity
. kron
and kronsum
have been adjusted to additionally support operation on sparse arrays.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.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.scipy.sparse.linalg.matrix_power
, has been added, allowing
for exponentiation of sparse arrays.scipy.spatial
improvementsspatial.transform.Rotation
:
__pow__
to raise a rotation to integer or fractional power and
approx_equal
to check if two rotations are approximately equal.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.spatial.transform.Rotation
called Davenport
angles is available through from_davenport
and as_davenport
methods.distance.hamming
and
distance.correlation
.SphericalVoronoi
sort_vertices_of_regions
and two dimensional area calculations.scipy.special
improvementsscipy.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.scipy.special.betaincc
for computation of the complementary incomplete Beta function and scipy.special.betainccinv
for computation of its inverse.scipy.special.betainc
and scipy.special.betaincinv
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
improvementsscipy.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.wasserstein_distance
now computes the Wasserstein distance
in the multidimensional case.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.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.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
.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.cirmean,
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`.logpdf
and fit
methods of scipy.stats.skewnorm
have been improved.scipy.stats.betanbinom
.scipy.stats.invwishart
rvs
and logpdf
have been improved.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.scipy.norminvgauss.pdf
has been eliminated.stats.circmean
, stats.circvar
,
stats.circstd
, and stats.entropy
.dirichlet
has gained a new covariance (cov
) method.multivariate_t
entropy with large degrees of
freedom.loggamma
has an improved entropy
method.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.14. 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.14. 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}
There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:
centered
keyword of stats.qmc.LatinHypercube
has been removed.
Use scrambled=False
instead of centered=True
.show_config
.A total of 161 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.
SciPy 1.11.4
is a bug-fix release with no new features
compared to 1.11.3
.
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.
SciPy 1.11.3
is a bug-fix release with no new features
compared to 1.11.2
.
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.
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.
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.
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.
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.
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.
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.det
and lu
now accept nD-arrays.axes
argument was added broadly to ndimage
functions, facilitating
analysis of stacked image data.scipy.integrate
improvementsscipy.integrate.qmc_quad
for quasi-Monte Carlo integration.scipy.integrate.simpson
now calculates
a parabolic segment over the last three points which gives improved
accuracy over the previous implementation.scipy.cluster
improvementsdisjoint_set
has a new method subset_size
for providing the size
of a particular subset.scipy.constants
improvementsquetta
, ronna
, ronto
, and quecto
SI prefixes were added.scipy.linalg
improvementsscipy.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
improvementsaxes
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
improvementsscipy.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.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
improvementsistft
has an improved warning message when the NOLA condition fails.scipy.sparse
improvementsscipy.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.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.argmin
and argmax
methods now return the correct result when explicit
zeros are present.scipy.sparse.linalg
improvementsLinearOperator
by a number now returns a
_ScaledLinearOperator
LinearOperator
now supports right multiplication by arrayslobpcg
should be more efficient following removal of an extraneous
QR decomposition.scipy.spatial
improvementsscipy.special
improvementsfactorial
, 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
improvementsscipy.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.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
.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.
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.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.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.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.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.exact=True
when passing integers in a float array to factorial
is deprecated and will be removed in SciPy 1.13.0.scipy.signal.medfilt
and
scipy.signal.order_filter
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.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
.legacy
keyword of scipy.special.comb
has changed
from True
to False
, as announced since its introduction.There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:
n
keyword has been removed from scipy.stats.moment
.alpha
keyword has been removed from scipy.stats.interval
.gilbrat
distribution has been removed (use
scipy.stats.gibrat
).kulsinski
distance metric has been
removed (use scipy.spatial.distance.kulczynski1
).vertices
keyword of scipy.spatial.Delauney.qhull
has been removed
(use simplices).residual
property of scipy.sparse.csgraph.maximum_flow
has been
removed (use flow
).extradoc
keyword of scipy.stats.rv_continuous
,
scipy.stats.rv_discrete
and scipy.stats.rv_sample
has been removed.sym_pos
keyword of scipy.linalg.solve
has been removed.scipy.optimize.minimize
function now raises an error for x0
with
x0.ndim > 1
.scipy.stats.mode
, the default value of keepdims
is now False
,
and support for non-numeric input has been removed.scipy.signal.lsim
does not support non-uniform time steps
anymore.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.