SciPy library main repository
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.
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.scipy.fft
improvementsscipy.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
improvementswavfile
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
improvementsscipy.interpolate
improvementsscipy.interpolate.Akima1DInterpolator
now supports extrapolation via the
extrapolate
argument.scipy.optimize
improvementsscipy.optimize.HessianUpdateStrategy
now also accepts square arrays for
init_scale
.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.optimize.differential_evolution
.scipy.optimize.approx_fprime
now has linear space complexity.scipy.signal
improvementsscipy.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
improvementsnp.ndarray
for argmin.repr
and str
output.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.scipy.sparse.linalg.spsolve_triangular
is now more than an order of
magnitude faster in many cases.scipy.spatial
improvementsRotation
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.Rotation
objects.scipy.special
improvementsscipy.special.log_wright_bessel
, for calculation of the logarithm of
Wright's Bessel function.scipy.special.hyp2f1
calculations has improved
substantially.boxcox
, inv_boxcox
, boxcox1p
, and
inv_boxcox1p
by preventing premature overflow.scipy.stats
improvementsscipy.stats.power
can be used for simulating the power
of a hypothesis test with respect to a specified alternative.scipy.stats.irwinhall
.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.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
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.conjtransp
method for scipy.sparse.dok_array
and
scipy.sparse.dok_matrix
has been deprecated and will be removed in SciPy
1.16.0.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
.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
.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}
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.
Note: SciPy 1.14.0
is not released yet!
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.
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.scipy.fft
improvementsscipy.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
improvementswavfile
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
improvementsscipy.interpolate
improvementsscipy.interpolate.Akima1DInterpolator
now supports extrapolation via the
extrapolate
argument.scipy.optimize
improvementsscipy.optimize.HessianUpdateStrategy
now also accepts square arrays for
init_scale
.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.optimize.differential_evolution
.scipy.optimize.approx_fprime
now has linear space complexity.scipy.signal
improvementsscipy.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
improvementsnp.ndarray
for argmin.repr
and str
output.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.scipy.sparse.linalg.spsolve_triangular
is now more than an order of
magnitude faster in many cases.scipy.spatial
improvementsRotation
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.Rotation
objects.scipy.special
improvementsscipy.special.log_wright_bessel
, for calculation of the logarithm of
Wright's Bessel function.scipy.special.hyp2f1
calculations has improved
substantially.boxcox
, inv_boxcox
, boxcox1p
, and
inv_boxcox1p
by preventing premature overflow.scipy.stats
improvementsscipy.stats.power
can be used for simulating the power
of a hypothesis test with respect to a specified alternative.scipy.stats.irwinhall
.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.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
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.conjtransp
method for scipy.sparse.dok_array
and
scipy.sparse.dok_matrix
has been deprecated and will be removed in SciPy
1.16.0.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
has deprecated support for use of exact=True
in
conjunction with non-integral N
and/or k
.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
.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}
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.
Note: SciPy 1.14.0
is not released yet!
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.
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.scipy.fft
improvementsscipy.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
improvementswavfile
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
improvementsscipy.interpolate
improvementsscipy.interpolate.Akima1DInterpolator
now supports extrapolation via the
extrapolate
argument.scipy.optimize
improvementsscipy.optimize.HessianUpdateStrategy
now also accepts square arrays for
init_scale
.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.optimize.differential_evolution
.scipy.optimize.approx_fprime
now has linear space complexity.scipy.signal
improvementsscipy.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
improvementsdia_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.scipy.sparse.linalg.spsolve_triangular
is now more than an order of
magnitude faster in many cases.scipy.spatial
improvementsRotation
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.Rotation
objects.scipy.special
improvementsscipy.special.log_wright_bessel
, for calculation of the logarithm of
Wright's Bessel function.scipy.special.hyp2f1
calculations has improved
substantially.boxcox
, inv_boxcox
, boxcox1p
, and
inv_boxcox1p
by preventing premature overflow.scipy.stats
improvementsscipy.stats.power
can be used for simulating the power
of a hypothesis test with respect to a specified alternative.scipy.stats.irwinhall
.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.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.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
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.conjtransp
method for scipy.sparse.dok_array
and
scipy.sparse.dok_matrix
has been deprecated and will be removed in SciPy
1.16.0.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
has deprecated support for use of exact=True
in
conjunction with non-integral N
and/or k
.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
.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}
A total of 81 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.13.1
is a bug-fix release with no new features
compared to 1.13.0
. The version of OpenBLAS shipped with
the PyPI binaries has been increased to 0.3.27
.
A total of 19 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
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.