SciPy library main repository
Note: SciPy 1.11.0
is not released yet!
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.
Note: SciPy 1.11.0
is not released yet!
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 a new public base
class distinct from the older matrix class, proper 64-bit index support,
and numerous deprecations paving the way to a modern sparse array experience.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
array (not matrix) classes now return a sparse array instead
of a dense array when divided by a dense array.scipy.sparse.sparray
was introduced, allowing
isinstance(x, scipy.sparse.sparray)
to select the new sparse array classes,
while isinstance(x, scipy.sparse.spmatrix)
selects only the old sparse
matrix types.scipy.sparse.isspmatrix()
was updated to return True for
only the sparse matrix types. If you want to check for either sparse arrays
or sparse matrices, use scipy.sparse.issparse()
instead. (Previously,
these had identical behavior.)scipy.sparse.diags_array
function was added, which behaves like the
existing scipy.sparse.diags
function except that it returns a sparse
array instead of a sparse matrix.argmin
and argmax
methods now return the correct result when no
implicit 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 / Kaplain-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 confidence intervals.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 131 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.10.1
is a bug-fix release with no new features
compared to 1.10.0
.
A total of 21 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
SciPy 1.10.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.10.x branch, and on adding new features on the main branch.
This release requires Python 3.8+
and NumPy 1.19.5
or greater.
For running on PyPy, PyPy3 6.0+
is required.
scipy.datasets
) has been added, and is
now preferred over usage of scipy.misc
for dataset retrieval.scipy.interpolate.make_smoothing_spline
function was added. This
function constructs a smoothing cubic spline from noisy data, using the
generalized cross-validation (GCV) criterion to find the tradeoff between
smoothness and proximity to data points.scipy.stats
has three new distributions, two new hypothesis tests, three
new sample statistics, a class for greater control over calculations
involving covariance matrices, and many other enhancements.scipy.datasets
introductionA new dedicated datasets
submodule has been added. The submodules
is meant for datasets that are relevant to other SciPy submodules ands
content (tutorials, examples, tests), as well as contain a curated
set of datasets that are of wider interest. As of this release, all
the datasets from scipy.misc
have been added to scipy.datasets
(and deprecated in scipy.misc
).
The submodule is based on Pooch (a new optional dependency for SciPy), a Python package to simplify fetching data files. This move will, in a subsequent release, facilitate SciPy to trim down the sdist/wheel sizes, by decoupling the data files and moving them out of the SciPy repository, hosting them externally and downloading them when requested. After downloading the datasets once, the files are cached to avoid network dependence and repeated usage.
Added datasets from scipy.misc
: scipy.datasets.face
,
scipy.datasets.ascent
, scipy.datasets.electrocardiogram
Added download and caching functionality:
scipy.datasets.download_all
: a function to download all the scipy.datasets
associated files at once.scipy.datasets.clear_cache
: a simple utility function to clear cached dataset
files from the file system.scipy/datasets/_download_all.py
can be run as a standalone script for
packaging purposes to avoid any external dependency at build or test time.
This can be used by SciPy packagers (e.g., for Linux distros) which may
have to adhere to rules that forbid downloading sources from external
repositories at package build time.scipy.integrate
improvementscomplex_func
to scipy.integrate.quad
, which can be set
True
to integrate a complex integrand.scipy.interpolate
improvementsscipy.interpolate.interpn
now supports tensor-product interpolation methods
(slinear
, cubic
, quintic
and pchip
)slinear
, cubic
, quintic
and
pchip
) in scipy.interpolate.interpn
and
scipy.interpolate.RegularGridInterpolator
now allow values with trailing
dimensions.scipy.interpolate.RegularGridInterpolator
has a new fast path for
method="linear"
with 2D data, and RegularGridInterpolator
is now
easier to subclassscipy.interpolate.interp1d
now can take a single value for non-spline
methods.extrapolate
argument is available to scipy.interpolate.BSpline.design_matrix
,
allowing extrapolation based on the first and last intervals.scipy.interpolate.make_smoothing_spline
has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. The lam=None
(default) mode of this function is a clean-room
reimplementation of the classic gcvspl.f
Fortran algorithm for
constructing GCV splines.method="pchip"
mode was aded to
scipy.interpolate.RegularGridInterpolator
. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, a scipy.interpolate.PchipInterpolator
instance per
dimension).scipy.sparse.linalg
improvementsThe spectral 2-norm is now available in scipy.sparse.linalg.norm
.
The performance of scipy.sparse.linalg.norm
for the default case (Frobenius
norm) has been improved.
LAPACK wrappers were added for trexc
and trsen
.
The scipy.sparse.linalg.lobpcg
algorithm was rewritten, yielding
the following improvements:
LinearOperator
format input and thus allow
a simple function handle of a callable object as an input,scipy.linalg
improvementsscipy.linalg.lu_factor
now accepts rectangular arrays instead of being restricted
to square arrays.scipy.ndimage
improvementsscipy.ndimage.value_indices
function provides a time-efficient method to
search for the locations of individual values with an array of image data.radius
argument is supported by scipy.ndimage.gaussian_filter1d
and
scipy.ndimage.gaussian_filter
for adjusting the kernel size of the filter.scipy.optimize
improvementsscipy.optimize.brute
now coerces non-iterable/single-value args
into a
tuple.scipy.optimize.least_squares
and scipy.optimize.curve_fit
now accept
scipy.optimize.Bounds
for bounds constraints.scipy.optimize.milp
.scipy.optimize.OptimizeResult
objects.parallel
, threads
, mip_rel_gap
) can now
be passed to scipy.optimize.linprog
with method='highs'
.scipy.signal
improvementsscipy.signal.windows.lanczos
was added to compute a
Lanczos window, also known as a sinc window.scipy.sparse.csgraph
improvementsscipy.sparse.csgraph.dijkstra
has been improved, and
star graphs in particular see a marked performance improvementscipy.special
improvementsscipy.special.powm1
, a ufunc with signature
powm1(x, y)
, computes x**y - 1
. The function avoids the loss of
precision that can result when y
is close to 0 or when x
is close to
1.scipy.special.erfinv
is now more accurate as it leverages the Boost equivalent under
the hood.scipy.stats
improvementsAdded scipy.stats.goodness_of_fit
, a generalized goodness-of-fit test for
use with any univariate distribution, any combination of known and unknown
parameters, and several choices of test statistic (Kolmogorov-Smirnov,
Cramer-von Mises, and Anderson-Darling).
Improved scipy.stats.bootstrap
: Default method 'BCa'
now supports
multi-sample statistics. Also, the bootstrap distribution is returned in the
result object, and the result object can be passed into the function as
parameter bootstrap_result
to add additional resamples or change the
confidence interval level and type.
Added maximum spacing estimation to scipy.stats.fit
.
Added the Poisson means test ("E-test") as scipy.stats.poisson_means_test
.
Added new sample statistics.
scipy.stats.contingency.odds_ratio
to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables.scipy.stats.directional_stats
to compute sample statistics of
n-dimensional directional data.scipy.stats.expectile
, which generalizes the expected value in the
same way as quantiles are a generalization of the median.Added new statistical distributions.
scipy.stats.uniform_direction
, a multivariate distribution to
sample uniformly from the surface of a hypersphere.scipy.stats.random_table
, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals.scipy.stats.truncpareto
, the truncated Pareto distribution.Improved the fit
method of several distributions.
scipy.stats.skewnorm
and scipy.stats.weibull_min
now use an analytical
solution when method='mm'
, which also serves a starting guess to
improve the performance of method='mle'
.scipy.stats.gumbel_r
and scipy.stats.gumbel_l
: analytical maximum
likelihood estimates have been extended to the cases in which location or
scale are fixed by the user.scipy.stats.powerlaw
.Improved random variate sampling of several distributions.
scipy.stats.matrix_normal
,
scipy.stats.ortho_group
, scipy.stats.special_ortho_group
, and
scipy.stats.unitary_group
is faster.rvs
method of scipy.stats.vonmises
now wraps to the interval
[-np.pi, np.pi]
.scipy.stats.loggamma
rvs
method for small
values of the shape parameter.Improved the speed and/or accuracy of functions of several statistical distributions.
scipy.stats.Covariance
for better speed, accuracy, and user control
in multivariate normal calculations.scipy.stats.skewnorm
methods cdf
, sf
, ppf
, and isf
methods now use the implementations from Boost, improving speed while
maintaining accuracy. The calculation of higher-order moments is also
faster and more accurate.scipy.stats.invgauss
methods ppf
and isf
methods now use the
implementations from Boost, improving speed and accuracy.scipy.stats.invweibull
methods sf
and isf
are more accurate for
small probability masses.scipy.stats.nct
and scipy.stats.ncx2
now rely on the implementations
from Boost, improving speed and accuracy.logpdf
method of scipy.stats.vonmises
for reliability
in extreme tails.isf
method of scipy.stats.levy
for speed and
accuracy.scipy.stats.studentized_range
for large df
by adding an infinite degree-of-freedom approximation.lower_limit
to scipy.stats.multivariate_normal
,
allowing the user to change the integration limit from -inf to a desired
value.entropy
of scipy.stats.vonmises
for large
concentration values.Enhanced scipy.stats.gaussian_kde
.
scipy.stats.gaussian_kde.marginal
, which returns the desired
marginal distribution of the original kernel density estimate distribution.cdf
method of scipy.stats.gaussian_kde
now accepts a
lower_limit
parameter for integrating the PDF over a rectangular region.scipy.stats.gaussian_kde.logpdf
to Cython,
improving speed.pdf
method of
scipy.stats.gaussian_kde
for improved multithreading performance.Enhanced the result objects returned by many scipy.stats
functions
confidence_interval
method to the result object returned by
scipy.stats.ttest_1samp
and scipy.stats.ttest_rel
.scipy.stats
functions combine_pvalues
, fisher_exact
,
chi2_contingency
, median_test
and mood
now return
bunch objects rather than plain tuples, allowing attributes to be
accessed by name.multiscale_graphcorr
,
anderson_ksamp
, binomtest
, crosstab
, pointbiserialr
,
spearmanr
, kendalltau
, and weightedtau
have been renamed to
statistic
and pvalue
for consistency throughout scipy.stats
.
Old attribute names are still allowed for backward compatibility.scipy.stats.anderson
now returns the parameters of the fitted
distribution in a scipy.stats._result_classes.FitResult
object.plot
method of scipy.stats._result_classes.FitResult
now accepts
a plot_type
parameter; the options are 'hist'
(histogram, default),
'qq'
(Q-Q plot), 'pp'
(P-P plot), and 'cdf'
(empirical CDF
plot).scipy.stats.kstest
) now return the
location (argmax) at which the statistic is calculated and the variant
of the statistic used.Improved the performance of several scipy.stats
functions.
scipy.stats.cramervonmises_2samp
and
scipy.stats.ks_2samp
with method='exact'
.scipy.stats.siegelslopes
.scipy.stats.mstats.hdquantile_sd
.scipy.stats.binned_statistic_dd
for several
NumPy statistics, and binned statistics methods now support complex data.Added the scramble
optional argument to scipy.stats.qmc.LatinHypercube
.
It replaces centered
, which is now deprecated.
Added a parameter optimization
to all scipy.stats.qmc.QMCEngine
subclasses to improve characteristics of the quasi-random variates.
Added tie correction to scipy.stats.mood
.
Added tutorials for resampling methods in scipy.stats
.
scipy.stats.bootstrap
, scipy.stats.permutation_test
, and
scipy.stats.monte_carlo_test
now automatically detect whether the provided
statistic
is vectorized, so passing the vectorized
argument
explicitly is no longer required to take advantage of vectorized statistics.
Improved the speed of scipy.stats.permutation_test
for permutation types
'samples'
and 'pairings'
.
Added axis
, nan_policy
, and masked array support to
scipy.stats.jarque_bera
.
Added the nan_policy
optional argument to scipy.stats.rankdata
.
scipy.misc
module and all the methods in misc
are deprecated in v1.10
and will be completely removed in SciPy v2.0.0. Users are suggested to
utilize the scipy.datasets
module instead for the dataset methods.scipy.stats.qmc.LatinHypercube
parameter centered
has been deprecated.
It is replaced by the scramble
argument for more consistency with other
QMC engines.scipy.interpolate.interp2d
class has been deprecated. The docstring of the
deprecated routine lists recommended replacements.There is an ongoing effort to follow through on long-standing deprecations.
The following previously deprecated features are affected:
cond
& rcond
kwargs in linalg.pinv
scipy.linalg.blas.{clapack, flapack}
scipy.stats.NumericalInverseHermite
and removed tol
& max_intervals
kwargs from scipy.stats.sampling.NumericalInverseHermite
local_search_options
kwarg frrom scipy.optimize.dual_annealing
.scipy.stats.bootstrap
, scipy.stats.permutation_test
, and
scipy.stats.monte_carlo_test
now automatically detect whether the provided
statistic
is vectorized by looking for an axis
parameter in the
signature of statistic
. If an axis
parameter is present in
statistic
but should not be relied on for vectorized calls, users must
pass option vectorized==False
explicitly.scipy.stats.multivariate_normal
will now raise a ValueError
when the
covariance matrix is not positive semidefinite, regardless of which method
is called.A total of 184 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.10.0
is not released yet!
SciPy 1.10.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.10.x branch, and on adding new features on the main branch.
This release requires Python 3.8+
and NumPy 1.19.5
or greater.
For running on PyPy, PyPy3 6.0+
is required.
scipy.datasets
) has been added, and is
now preferred over usage of scipy.misc
for dataset retrieval.scipy.interpolate.make_smoothing_spline
function was added. This
function constructs a smoothing cubic spline from noisy data, using the
generalized cross-validation (GCV) criterion to find the tradeoff between
smoothness and proximity to data points.scipy.stats
has three new distributions, two new hypothesis tests, three
new sample statistics, a class for greater control over calculations
involving covariance matrices, and many other enhancements.scipy.datasets
introductionA new dedicated datasets
submodule has been added. The submodules
is meant for datasets that are relevant to other SciPy submodules ands
content (tutorials, examples, tests), as well as contain a curated
set of datasets that are of wider interest. As of this release, all
the datasets from scipy.misc
have been added to scipy.datasets
(and deprecated in scipy.misc
).
The submodule is based on Pooch (a new optional dependency for SciPy), a Python package to simplify fetching data files. This move will, in a subsequent release, facilitate SciPy to trim down the sdist/wheel sizes, by decoupling the data files and moving them out of the SciPy repository, hosting them externally and downloading them when requested. After downloading the datasets once, the files are cached to avoid network dependence and repeated usage.
Added datasets from scipy.misc
: scipy.datasets.face
,
scipy.datasets.ascent
, scipy.datasets.electrocardiogram
Added download and caching functionality:
scipy.datasets.download_all
: a function to download all the scipy.datasets
associated files at once.scipy.datasets.clear_cache
: a simple utility function to clear cached dataset
files from the file system.scipy/datasets/_download_all.py
can be run as a standalone script for
packaging purposes to avoid any external dependency at build or test time.
This can be used by SciPy packagers (e.g., for Linux distros) which may
have to adhere to rules that forbid downloading sources from external
repositories at package build time.scipy.integrate
improvementsscipy.integrate.qmc_quad
, which performs quadrature using Quasi-Monte
Carlo points.complex_func
to scipy.integrate.quad
, which can be set
True
to integrate a complex integrand.scipy.interpolate
improvementsscipy.interpolate.interpn
now supports tensor-product interpolation methods
(slinear
, cubic
, quintic
and pchip
)slinear
, cubic
, quintic
and
pchip
) in scipy.interpolate.interpn
and
scipy.interpolate.RegularGridInterpolator
now allow values with trailing
dimensions.scipy.interpolate.RegularGridInterpolator
has a new fast path for
method="linear"
with 2D data, and RegularGridInterpolator
is now
easier to subclassscipy.interpolate.interp1d
now can take a single value for non-spline
methods.extrapolate
argument is available to scipy.interpolate.BSpline.design_matrix
,
allowing extrapolation based on the first and last intervals.scipy.interpolate.make_smoothing_spline
has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. The lam=None
(default) mode of this function is a clean-room
reimplementation of the classic gcvspl.f
Fortran algorithm for
constructing GCV splines.method="pchip"
mode was aded to
scipy.interpolate.RegularGridInterpolator
. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, a scipy.interpolate.PchipInterpolator
instance per
dimension).scipy.sparse.linalg
improvementsThe spectral 2-norm is now available in scipy.sparse.linalg.norm
.
The performance of scipy.sparse.linalg.norm
for the default case (Frobenius
norm) has been improved.
LAPACK wrappers were added for trexc
and trsen
.
The scipy.sparse.linalg.lobpcg
algorithm was rewritten, yielding
the following improvements:
LinearOperator
format input and thus allow
a simple function handle of a callable object as an input,scipy.linalg
improvementsscipy.linalg.lu_factor
now accepts rectangular arrays instead of being restricted
to square arrays.scipy.ndimage
improvementsscipy.ndimage.value_indices
function provides a time-efficient method to
search for the locations of individual values with an array of image data.radius
argument is supported by scipy.ndimage.gaussian_filter1d
and
scipy.ndimage.gaussian_filter
for adjusting the kernel size of the filter.scipy.optimize
improvementsscipy.optimize.brute
now coerces non-iterable/single-value args
into a
tuple.scipy.optimize.least_squares
and scipy.optimize.curve_fit
now accept
scipy.optimize.Bounds
for bounds constraints.scipy.optimize.milp
.scipy.optimize.OptimizeResult
objects.parallel
, threads
, mip_rel_gap
) can now
be passed to scipy.optimize.linprog
with method='highs'
.scipy.signal
improvementsscipy.signal.windows.lanczos
was added to compute a
Lanczos window, also known as a sinc window.scipy.sparse.csgraph
improvementsscipy.sparse.csgraph.dijkstra
has been improved, and
star graphs in particular see a marked performance improvementscipy.special
improvementsscipy.special.powm1
, a ufunc with signature
powm1(x, y)
, computes x**y - 1
. The function avoids the loss of
precision that can result when y
is close to 0 or when x
is close to
1.scipy.special.erfinv
is now more accurate as it leverages the Boost equivalent under
the hood.scipy.stats
improvementsAdded scipy.stats.goodness_of_fit
, a generalized goodness-of-fit test for
use with any univariate distribution, any combination of known and unknown
parameters, and several choices of test statistic (Kolmogorov-Smirnov,
Cramer-von Mises, and Anderson-Darling).
Improved scipy.stats.bootstrap
: Default method 'BCa'
now supports
multi-sample statistics. Also, the bootstrap distribution is returned in the
result object, and the result object can be passed into the function as
parameter bootstrap_result
to add additional resamples or change the
confidence interval level and type.
Added maximum spacing estimation to scipy.stats.fit
.
Added the Poisson means test ("E-test") as scipy.stats.poisson_means_test
.
Added new sample statistics.
scipy.stats.contingency.odds_ratio
to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables.scipy.stats.directional_stats
to compute sample statistics of
n-dimensional directional data.scipy.stats.expectile
, which generalizes the expected value in the
same way as quantiles are a generalization of the median.Added new statistical distributions.
scipy.stats.uniform_direction
, a multivariate distribution to
sample uniformly from the surface of a hypersphere.scipy.stats.random_table
, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals.scipy.stats.truncpareto
, the truncated Pareto distribution.Improved the fit
method of several distributions.
scipy.stats.skewnorm
and scipy.stats.weibull_min
now use an analytical
solution when method='mm'
, which also serves a starting guess to
improve the performance of method='mle'
.scipy.stats.gumbel_r
and scipy.stats.gumbel_l
: analytical maximum
likelihood estimates have been extended to the cases in which location or
scale are fixed by the user.scipy.stats.powerlaw
.Improved random variate sampling of several distributions.
scipy.stats.matrix_normal
,
scipy.stats.ortho_group
, scipy.stats.special_ortho_group
, and
scipy.stats.unitary_group
is faster.rvs
method of scipy.stats.vonmises
now wraps to the interval
[-np.pi, np.pi]
.scipy.stats.loggamma
rvs
method for small
values of the shape parameter.Improved the speed and/or accuracy of functions of several statistical distributions.
scipy.stats.Covariance
for better speed, accuracy, and user control
in multivariate normal calculations.scipy.stats.skewnorm
methods cdf
, sf
, ppf
, and isf
methods now use the implementations from Boost, improving speed while
maintaining accuracy. The calculation of higher-order moments is also
faster and more accurate.scipy.stats.invgauss
methods ppf
and isf
methods now use the
implementations from Boost, improving speed and accuracy.scipy.stats.invweibull
methods sf
and isf
are more accurate for
small probability masses.scipy.stats.nct
and scipy.stats.ncx2
now rely on the implementations
from Boost, improving speed and accuracy.logpdf
method of scipy.stats.vonmises
for reliability
in extreme tails.isf
method of scipy.stats.levy
for speed and
accuracy.scipy.stats.studentized_range
for large df
by adding an infinite degree-of-freedom approximation.lower_limit
to scipy.stats.multivariate_normal
,
allowing the user to change the integration limit from -inf to a desired
value.entropy
of scipy.stats.vonmises
for large
concentration values.Enhanced scipy.stats.gaussian_kde
.
scipy.stats.gaussian_kde.marginal
, which returns the desired
marginal distribution of the original kernel density estimate distribution.cdf
method of scipy.stats.gaussian_kde
now accepts a
lower_limit
parameter for integrating the PDF over a rectangular region.scipy.stats.gaussian_kde.logpdf
to Cython,
improving speed.pdf
method of
scipy.stats.gaussian_kde
for improved multithreading performance.Enhanced the result objects returned by many scipy.stats
functions
confidence_interval
method to the result object returned by
scipy.stats.ttest_1samp
and scipy.stats.ttest_rel
.scipy.stats
functions combine_pvalues
, fisher_exact
,
chi2_contingency
, median_test
and mood
now return
bunch objects rather than plain tuples, allowing attributes to be
accessed by name.multiscale_graphcorr
,
anderson_ksamp
, binomtest
, crosstab
, pointbiserialr
,
spearmanr
, kendalltau
, and weightedtau
have been renamed to
statistic
and pvalue
for consistency throughout scipy.stats
.
Old attribute names are still allowed for backward compatibility.scipy.stats.anderson
now returns the parameters of the fitted
distribution in a scipy.stats._result_classes.FitResult
object.plot
method of scipy.stats._result_classes.FitResult
now accepts
a plot_type
parameter; the options are 'hist'
(histogram, default),
'qq'
(Q-Q plot), 'pp'
(P-P plot), and 'cdf'
(empirical CDF
plot).scipy.stats.kstest
) now return the
location (argmax) at which the statistic is calculated and the variant
of the statistic used.Improved the performance of several scipy.stats
functions.
scipy.stats.cramervonmises_2samp
and
scipy.stats.ks_2samp
with method='exact'
.scipy.stats.siegelslopes
.scipy.stats.mstats.hdquantile_sd
.scipy.stats.binned_statistic_dd
for several
NumPy statistics, and binned statistics methods now support complex data.Added the scramble
optional argument to scipy.stats.qmc.LatinHypercube
.
It replaces centered
, which is now deprecated.
Added a parameter optimization
to all scipy.stats.qmc.QMCEngine
subclasses to improve characteristics of the quasi-random variates.
Added tie correction to scipy.stats.mood
.
Added tutorials for resampling methods in scipy.stats
.
scipy.stats.bootstrap
, scipy.stats.permutation_test
, and
scipy.stats.monte_carlo_test
now automatically detect whether the provided
statistic
is vectorized, so passing the vectorized
argument
explicitly is no longer required to take advantage of vectorized statistics.
Improved the speed of scipy.stats.permutation_test
for permutation types
'samples'
and 'pairings'
.
Added axis
, nan_policy
, and masked array support to
scipy.stats.jarque_bera
.
Added the nan_policy
optional argument to scipy.stats.rankdata
.
scipy.misc
module and all the methods in misc
are deprecated in v1.10
and will be completely removed in SciPy v2.0.0. Users are suggested to
utilize the scipy.datasets
module instead for the dataset methods.scipy.stats.qmc.LatinHypercube
parameter centered
has been deprecated.
It is replaced by the scramble
argument for more consistency with other
QMC engines.scipy.interpolate.interp2d
class has been deprecated. The docstring of the
deprecated routine lists recommended replacements.There is an ongoing effort to follow through on long-standing deprecations.
The following previously deprecated features are affected:
cond
& rcond
kwargs in linalg.pinv
scipy.linalg.blas.{clapack, flapack}
scipy.stats.NumericalInverseHermite
and removed tol
& max_intervals
kwargs from scipy.stats.sampling.NumericalInverseHermite
local_search_options
kwarg frrom scipy.optimize.dual_annealing
.scipy.stats.bootstrap
, scipy.stats.permutation_test
, and
scipy.stats.monte_carlo_test
now automatically detect whether the provided
statistic
is vectorized by looking for an axis
parameter in the
signature of statistic
. If an axis
parameter is present in
statistic
but should not be relied on for vectorized calls, users must
pass option vectorized==False
explicitly.scipy.stats.multivariate_normal
will now raise a ValueError
when the
covariance matrix is not positive semidefinite, regardless of which method
is called.A total of 182 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.10.0
is not released yet!
SciPy 1.10.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.10.x branch, and on adding new features on the main branch.
This release requires Python 3.8+
and NumPy 1.19.5
or greater.
For running on PyPy, PyPy3 6.0+
is required.
scipy.datasets
) has been added, and is
now preferred over usage of scipy.misc
for dataset retrieval.scipy.interpolate.make_smoothing_spline
function was added. This
function constructs a smoothing cubic spline from noisy data, using the
generalized cross-validation (GCV) criterion to find the tradeoff between
smoothness and proximity to data points.scipy.stats
has three new distributions, two new hypothesis tests, three
new sample statistics, a class for greater control over calculations
involving covariance matrices, and many other enhancements.scipy.datasets
introductionA new dedicated datasets
submodule has been added. The submodules
is meant for datasets that are relevant to other SciPy submodules ands
content (tutorials, examples, tests), as well as contain a curated
set of datasets that are of wider interest. As of this release, all
the datasets from scipy.misc
have been added to scipy.datasets
(and deprecated in scipy.misc
).
The submodule is based on Pooch (a new optional dependency for SciPy), a Python package to simplify fetching data files. This move will, in a subsequent release, facilitate SciPy to trim down the sdist/wheel sizes, by decoupling the data files and moving them out of the SciPy repository, hosting them externally and downloading them when requested. After downloading the datasets once, the files are cached to avoid network dependence and repeated usage.
Added datasets from scipy.misc
: scipy.datasets.face
,
scipy.datasets.ascent
, scipy.datasets.electrocardiogram
Added download and caching functionality:
scipy.datasets.download_all
: a function to download all the scipy.datasets
associated files at once.scipy.datasets.clear_cache
: a simple utility function to clear cached dataset
files from the file system.scipy/datasets/_download_all.py
can be run as a standalone script for
packaging purposes to avoid any external dependency at build or test time.
This can be used by SciPy packagers (e.g., for Linux distros) which may
have to adhere to rules that forbid downloading sources from external
repositories at package build time.scipy.integrate
improvementsscipy.integrate.qmc_quad
, which performs quadrature using Quasi-Monte
Carlo points.complex_func
to scipy.integrate.quad
, which can be set
True
to integrate a complex integrand.scipy.interpolate
improvementsscipy.interpolate.interpn
now supports tensor-product interpolation methods
(slinear
, cubic
, quintic
and pchip
)slinear
, cubic
, quintic
and
pchip
) in scipy.interpolate.interpn
and
scipy.interpolate.RegularGridInterpolator
now allow values with trailing
dimensions.scipy.interpolate.RegularGridInterpolator
has a new fast path for
method="linear"
with 2D data, and RegularGridInterpolator
is now
easier to subclassscipy.interpolate.interp1d
now can take a single value for non-spline
methods.extrapolate
argument is available to scipy.interpolate.BSpline.design_matrix
,
allowing extrapolation based on the first and last intervals.scipy.interpolate.make_smoothing_spline
has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. The lam=None
(default) mode of this function is a clean-room
reimplementation of the classic gcvspl.f
Fortran algorithm for
constructing GCV splines.method="pchip"
mode was aded to
scipy.interpolate.RegularGridInterpolator
. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, a scipy.interpolate.PchipInterpolator
instance per
dimension).scipy.sparse.linalg
improvementsThe spectral 2-norm is now available in scipy.sparse.linalg.norm
.
The performance of scipy.sparse.linalg.norm
for the default case (Frobenius
norm) has been improved.
LAPACK wrappers were added for trexc
and trsen
.
The scipy.sparse.linalg.lobpcg
algorithm was rewritten, yielding
the following improvements:
LinearOperator
format input and thus allow
a simple function handle of a callable object as an input,scipy.linalg
improvementsscipy.linalg.lu_factor
now accepts rectangular arrays instead of being restricted
to square arrays.scipy.ndimage
improvementsscipy.ndimage.value_indices
function provides a time-efficient method to
search for the locations of individual values with an array of image data.radius
argument is supported by scipy.ndimage.gaussian_filter1d
and
scipy.ndimage.gaussian_filter
for adjusting the kernel size of the filter.scipy.optimize
improvementsscipy.optimize.brute
now coerces non-iterable/single-value args
into a
tuple.scipy.optimize.least_squares
and scipy.optimize.curve_fit
now accept
scipy.optimize.Bounds
for bounds constraints.scipy.optimize.milp
.scipy.optimize.OptimizeResult
objects.parallel
, threads
, mip_rel_gap
) can now
be passed to scipy.optimize.linprog
with method='highs'
.scipy.signal
improvementsscipy.signal.windows.lanczos
was added to compute a
Lanczos window, also known as a sinc window.scipy.sparse.csgraph
improvementsscipy.sparse.csgraph.dijkstra
has been improved, and
star graphs in particular see a marked performance improvementscipy.special
improvementsscipy.special.powm1
, a ufunc with signature
powm1(x, y)
, computes x**y - 1
. The function avoids the loss of
precision that can result when y
is close to 0 or when x
is close to
1.scipy.special.erfinv
is now more accurate as it leverages the Boost equivalent under
the hood.scipy.stats
improvementsAdded scipy.stats.goodness_of_fit
, a generalized goodness-of-fit test for
use with any univariate distribution, any combination of known and unknown
parameters, and several choices of test statistic (Kolmogorov-Smirnov,
Cramer-von Mises, and Anderson-Darling).
Improved scipy.stats.bootstrap
: Default method 'BCa'
now supports
multi-sample statistics. Also, the bootstrap distribution is returned in the
result object, and the result object can be passed into the function as
parameter bootstrap_result
to add additional resamples or change the
confidence interval level and type.
Added maximum spacing estimation to scipy.stats.fit
.
Added the Poisson means test ("E-test") as scipy.stats.poisson_means_test
.
Added new sample statistics.
scipy.stats.contingency.odds_ratio
to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables.scipy.stats.directional_stats
to compute sample statistics of
n-dimensional directional data.scipy.stats.expectile
, which generalizes the expected value in the
same way as quantiles are a generalization of the median.Added new statistical distributions.
scipy.stats.uniform_direction
, a multivariate distribution to
sample uniformly from the surface of a hypersphere.scipy.stats.random_table
, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals.scipy.stats.truncpareto
, the truncated Pareto distribution.Improved the fit
method of several distributions.
scipy.stats.skewnorm
and scipy.stats.weibull_min
now use an analytical
solution when method='mm'
, which also serves a starting guess to
improve the performance of method='mle'
.scipy.stats.gumbel_r
and scipy.stats.gumbel_l
: analytical maximum
likelihood estimates have been extended to the cases in which location or
scale are fixed by the user.scipy.stats.powerlaw
.Improved random variate sampling of several distributions.
scipy.stats.matrix_normal
,
scipy.stats.ortho_group
, scipy.stats.special_ortho_group
, and
scipy.stats.unitary_group
is faster.rvs
method of scipy.stats.vonmises
now wraps to the interval
[-np.pi, np.pi]
.scipy.stats.loggamma
rvs
method for small
values of the shape parameter.Improved the speed and/or accuracy of functions of several statistical distributions.
scipy.stats.Covariance
for better speed, accuracy, and user control
in multivariate normal calculations.scipy.stats.skewnorm
methods cdf
, sf
, ppf
, and isf
methods now use the implementations from Boost, improving speed while
maintaining accuracy. The calculation of higher-order moments is also
faster and more accurate.scipy.stats.invgauss
methods ppf
and isf
methods now use the
implementations from Boost, improving speed and accuracy.scipy.stats.invweibull
methods sf
and isf
are more accurate for
small probability masses.scipy.stats.nct
and scipy.stats.ncx2
now rely on the implementations
from Boost, improving speed and accuracy.logpdf
method of scipy.stats.vonmises
for reliability
in extreme tails.isf
method of scipy.stats.levy
for speed and
accuracy.scipy.stats.studentized_range
for large df
by adding an infinite degree-of-freedom approximation.lower_limit
to scipy.stats.multivariate_normal
,
allowing the user to change the integration limit from -inf to a desired
value.entropy
of scipy.stats.vonmises
for large
concentration values.Enhanced scipy.stats.gaussian_kde
.
scipy.stats.gaussian_kde.marginal
, which returns the desired
marginal distribution of the original kernel density estimate distribution.cdf
method of scipy.stats.gaussian_kde
now accepts a
lower_limit
parameter for integrating the PDF over a rectangular region.scipy.stats.gaussian_kde.logpdf
to Cython,
improving speed.pdf
method of
scipy.stats.gaussian_kde
for improved multithreading performance.Enhanced the result objects returned by many scipy.stats
functions
confidence_interval
method to the result object returned by
scipy.stats.ttest_1samp
and scipy.stats.ttest_rel
.scipy.stats
functions combine_pvalues
, fisher_exact
,
chi2_contingency
, median_test
and mood
now return
bunch objects rather than plain tuples, allowing attributes to be
accessed by name.multiscale_graphcorr
,
anderson_ksamp
, binomtest
, crosstab
, pointbiserialr
,
spearmanr
, kendalltau
, and weightedtau
have been renamed to
statistic
and pvalue
for consistency throughout scipy.stats
.
Old attribute names are still allowed for backward compatibility.scipy.stats.anderson
now returns the parameters of the fitted
distribution in a scipy.stats._result_classes.FitResult
object.plot
method of scipy.stats._result_classes.FitResult
now accepts
a plot_type
parameter; the options are 'hist'
(histogram, default),
'qq'
(Q-Q plot), 'pp'
(P-P plot), and 'cdf'
(empirical CDF
plot).scipy.stats.kstest
) now return the
location (argmax) at which the statistic is calculated and the variant
of the statistic used.Improved the performance of several scipy.stats
functions.
scipy.stats.cramervonmises_2samp
and
scipy.stats.ks_2samp
with method='exact'
.scipy.stats.siegelslopes
.scipy.stats.mstats.hdquantile_sd
.scipy.stats.binned_statistic_dd
for several
NumPy statistics, and binned statistics methods now support complex data.Added the scramble
optional argument to scipy.stats.qmc.LatinHypercube
.
It replaces centered
, which is now deprecated.
Added a parameter optimization
to all scipy.stats.qmc.QMCEngine
subclasses to improve characteristics of the quasi-random variates.
Added tie correction to scipy.stats.mood
.
Added tutorials for resampling methods in scipy.stats
.
scipy.stats.bootstrap
, scipy.stats.permutation_test
, and
scipy.stats.monte_carlo_test
now automatically detect whether the provided
statistic
is vectorized, so passing the vectorized
argument
explicitly is no longer required to take advantage of vectorized statistics.
Improved the speed of scipy.stats.permutation_test
for permutation types
'samples'
and 'pairings'
.
Added axis
, nan_policy
, and masked array support to
scipy.stats.jarque_bera
.
Added the nan_policy
optional argument to scipy.stats.rankdata
.
scipy.misc
module and all the methods in misc
are deprecated in v1.10
and will be completely removed in SciPy v2.0.0. Users are suggested to
utilize the scipy.datasets
module instead for the dataset methods.scipy.stats.qmc.LatinHypercube
parameter centered
has been deprecated.
It is replaced by the scramble
argument for more consistency with other
QMC engines.scipy.interpolate.interp2d
class has been deprecated. The docstring of the
deprecated routine lists recommended replacements.There is an ongoing effort to follow through on long-standing deprecations.
The following previously deprecated features are affected:
cond
& rcond
kwargs in linalg.pinv
scipy.linalg.blas.{clapack, flapack}
scipy.stats.NumericalInverseHermite
and removed tol
& max_intervals
kwargs from scipy.stats.sampling.NumericalInverseHermite
local_search_options
kwarg frrom scipy.optimize.dual_annealing
.scipy.stats.bootstrap
, scipy.stats.permutation_test
, and
scipy.stats.monte_carlo_test
now automatically detect whether the provided
statistic
is vectorized by looking for an axis
parameter in the
signature of statistic
. If an axis
parameter is present in
statistic
but should not be relied on for vectorized calls, users must
pass option vectorized==False
explicitly.scipy.stats.multivariate_normal
will now raise a ValueError
when the
covariance matrix is not positive semidefinite, regardless of which method
is called.A total of 180 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.9.3
is a bug-fix release with no new features
compared to 1.9.2
.
A total of 31 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.9.2
is a bug-fix release with no new features
compared to 1.9.1
. It also provides wheels for Python 3.11
on several platforms.
A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
SciPy 1.9.1
is a bug-fix release with no new features
compared to 1.9.0
. Notably, some important meson build
fixes are included.
A total of 8 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
SciPy 1.9.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.9.x branch, and on adding new features on the main branch.
This release requires Python 3.8-3.11
and NumPy 1.18.5
or greater.
For running on PyPy, PyPy3 6.0+
is required.
meson
, substantially improving
our build performance, and providing better build-time configuration and
cross-compilation support,scipy.optimize.milp
, new function for mixed-integer linear
programming,scipy.stats.fit
for fitting discrete and continuous distributions
to data,scipy.interpolate.RegularGridInterpolator
,scipy.optimize.direct
.scipy.interpolate
improvementsRBFInterpolator
evaluation with high dimensional
interpolants.scipy.interpolate.RegularGridInterpolator
and its tutorial.scipy.interpolate.RegularGridInterpolator
and scipy.interpolate.interpn
now accept descending ordered points.RegularGridInterpolator
now handles length-1 grid axes.BivariateSpline
subclasses have a new method partial_derivative
which constructs a new spline object representing a derivative of an
original spline. This mirrors the corresponding functionality for univariate
splines, splder
and BSpline.derivative
, and can substantially speed
up repeated evaluation of derivatives.scipy.linalg
improvementsscipy.linalg.expm
now accepts nD arrays. Its speed is also improved.3.7.1
.scipy.fft
improvementsuarray
multimethods for scipy.fft.fht
and scipy.fft.ifht
to allow provision of third party backend implementations such as those
recently added to CuPy.scipy.optimize
improvementsA new global optimizer, scipy.optimize.direct
(DIviding RECTangles algorithm)
was added. For problems with inexpensive function evaluations, like the ones
in the SciPy benchmark suite, direct
is competitive with the best other
solvers in SciPy (dual_annealing
and differential_evolution
) in terms
of execution time. See
gh-14300 <https://github.com/scipy/scipy/pull/14300>
__ for more details.
Add a full_output
parameter to scipy.optimize.curve_fit
to output
additional solution information.
Add a integrality
parameter to scipy.optimize.differential_evolution
,
enabling integer constraints on parameters.
Add a vectorized
parameter to call a vectorized objective function only
once per iteration. This can improve minimization speed by reducing
interpreter overhead from the multiple objective function calls.
The default method of scipy.optimize.linprog
is now 'highs'
.
Added scipy.optimize.milp
, new function for mixed-integer linear
programming.
Added Newton-TFQMR method to newton_krylov
.
Added support for the Bounds
class in shgo
and dual_annealing
for
a more uniform API across scipy.optimize
.
Added the vectorized
keyword to differential_evolution
.
approx_fprime
now works with vector-valued functions.
scipy.signal
improvementsscipy.signal.windows.kaiser_bessel_derived
was
added to compute the Kaiser-Bessel derived window.hilbert
operations are now faster as a result of more
consistent dtype
handling.scipy.sparse
improvementscopy
parameter to scipy.sparce.csgraph.laplacian
. Using inplace
computation with copy=False
reduces the memory footprint.dtype
parameter to scipy.sparce.csgraph.laplacian
for type casting.symmetrized
parameter to scipy.sparce.csgraph.laplacian
to produce
symmetric Laplacian for directed graphs.form
parameter to scipy.sparce.csgraph.laplacian
taking one of the
three values: array
, or function
, or lo
determining the format of
the output Laplacian:
array
is a numpy array (backward compatible default);function
is a pointer to a lambda-function evaluating the
Laplacian-vector or Laplacian-matrix product;lo
results in the format of the LinearOperator
.scipy.sparse.linalg
improvementslobpcg
performance improvements for small input cases.scipy.spatial
improvementsorder
parameter to scipy.spatial.transform.Rotation.from_quat
and scipy.spatial.transform.Rotation.as_quat
to specify quaternion format.scipy.stats
improvementsscipy.stats.monte_carlo_test
performs one-sample Monte Carlo hypothesis
tests to assess whether a sample was drawn from a given distribution. Besides
reproducing the results of hypothesis tests like scipy.stats.ks_1samp
,
scipy.stats.normaltest
, and scipy.stats.cramervonmises
without small sample
size limitations, it makes it possible to perform similar tests using arbitrary
statistics and distributions.
Several scipy.stats
functions support new axis
(integer or tuple of
integers) and nan_policy
('raise', 'omit', or 'propagate'), and
keepdims
arguments.
These functions also support masked arrays as inputs, even if they do not have
a scipy.stats.mstats
counterpart. Edge cases for multidimensional arrays,
such as when axis-slices have no unmasked elements or entire inputs are of
size zero, are handled consistently.
Add a weight
parameter to scipy.stats.hmean
.
Several improvements have been made to scipy.stats.levy_stable
. Substantial
improvement has been made for numerical evaluation of the pdf and cdf,
resolving #12658 and
#14944. The improvement is
particularly dramatic for stability parameter alpha
close to or equal to 1
and for alpha
below but approaching its maximum value of 2. The alternative
fast Fourier transform based method for pdf calculation has also been updated
to use the approach of Wang and Zhang from their 2008 conference paper
Simpson’s rule based FFT method to compute densities of stable distribution,
making this method more competitive with the default method. In addition,
users now have the option to change the parametrization of the Levy Stable
distribution to Nolan's "S0" parametrization which is used internally by
SciPy's pdf and cdf implementations. The "S0" parametrization is described in
Nolan's paper Numerical calculation of stable densities and distribution
functions upon which SciPy's
implementation is based. "S0" has the advantage that delta
and gamma
are proper location and scale parameters. With delta
and gamma
fixed,
the location and scale of the resulting distribution remain unchanged as
alpha
and beta
change. This is not the case for the default "S1"
parametrization. Finally, more options have been exposed to allow users to
trade off between runtime and accuracy for both the default and FFT methods of
pdf and cdf calculation. More information can be found in the documentation
here (to be linked).
Added scipy.stats.fit
for fitting discrete and continuous distributions to
data.
The methods "pearson"
and "tippet"
from scipy.stats.combine_pvalues
have been fixed to return the correct p-values, resolving
#15373. In addition, the
documentation for scipy.stats.combine_pvalues
has been expanded and improved.
Unlike other reduction functions, stats.mode
didn't consume the axis
being operated on and failed for negative axis inputs. Both the bugs have been
fixed. Note that stats.mode
will now consume the input axis and return an
ndarray with the axis
dimension removed.
Replaced implementation of scipy.stats.ncf
with the implementation from
Boost for improved reliability.
Add a bits
parameter to scipy.stats.qmc.Sobol
. It allows to use from 0
to 64 bits to compute the sequence. Default is None
which corresponds to
30 for backward compatibility. Using a higher value allow to sample more
points. Note: bits
does not affect the output dtype.
Add a integers
method to scipy.stats.qmc.QMCEngine
. It allows sampling
integers using any QMC sampler.
Improved the fit speed and accuracy of stats.pareto
.
Added qrvs
method to NumericalInversePolynomial
to match the
situation for NumericalInverseHermite
.
Faster random variate generation for gennorm
and nakagami
.
lloyd_centroidal_voronoi_tessellation
has been added to allow improved
sample distributions via iterative application of Voronoi diagrams and
centering operations
Add scipy.stats.qmc.PoissonDisk
to sample using the Poisson disk sampling
method. It guarantees that samples are separated from each other by a
given radius
.
Add scipy.stats.pmean
to calculate the weighted power mean also called
generalized mean.
n
of several distributions,
use of the distribution moment
method with keyword argument n
is
deprecated. Keyword n
is replaced with keyword order
.interval
method with keyword arguments
alpha
is deprecated. Keyword alpha
is replaced with keyword
confidence
.'simplex'
, 'revised simplex'
, and 'interior-point'
methods
of scipy.optimize.linprog
are deprecated. Methods highs
, highs-ds
,
or highs-ipm
should be used in new code.stats.mode
.
pandas.DataFrame.mode
can be used instead.spatial.distance.kulsinski
has been deprecated in favor
of spatial.distance.kulczynski1
.maxiter
keyword of the truncated Newton (TNC) algorithm has been
deprecated in favour of maxfun
.vertices
keyword of Delauney.qhull
now raises a
DeprecationWarning, after having been deprecated in documentation only
for a long time.extradoc
keyword of rv_continuous
, rv_discrete
and
rv_sample
now raises a DeprecationWarning, after having been deprecated in
documentation only for a long time.There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:
radius=None
to scipy.spatial.SphericalVoronoi
now raises an
error (not adding radius
defaults to 1, as before).ndim > 1
._rvs
method of statistical distributions now requires a size
parameter.fillvalue
that cannot be cast to the output type in
scipy.signal.convolve2d
now raises an error.scipy.spatial.distance
now enforces that the input vectors are
one-dimensional.stats.itemfreq
.stats.median_absolute_deviation
.n_jobs
keyword argument and use of k=None
from
kdtree.query
.right
keyword from interpolate.PPoly.extend
.debug
keyword from scipy.linalg.solve_*
._ppform
scipy.interpolate
.matvec
and matmat
.mlab
truncation mode from cluster.dendrogram
.cluster.vq.py_vq2
.ftol
and xtol
from
optimize.minimize(method='Nelder-Mead')
.signal.windows.hanning
.gegv
functions from linalg
; this raises the minimally
required LAPACK version to 3.7.1.spatial.distance.matching
.scipy.random
for numpy.random
.scipy.misc
(docformat
,
inherit_docstring_from
, extend_notes_in_docstring
,
replace_notes_in_docstring
, indentcount_lines
, filldoc
,
unindent_dict
, unindent_string
).linalg.pinv2
.scipy.stats
functions now convert np.matrix
to np.ndarray
s
before the calculation is performed. In this case, the output will be a scalar
or np.ndarray
of appropriate shape rather than a 2D np.matrix
.
Similarly, while masked elements of masked arrays are still ignored, the
output will be a scalar or np.ndarray
rather than a masked array with
mask=False
.scipy.optimize.linprog
is now 'highs'
, not
'interior-point'
(which is now deprecated), so callback functions and
some options are no longer supported with the default method. With the
default method, the x
attribute of the returned OptimizeResult
is
now None
(instead of a non-optimal array) when an optimal solution
cannot be found (e.g. infeasible problem).scipy.stats.combine_pvalues
, the sign of the test statistic returned
for the method "pearson"
has been flipped so that higher values of the
statistic now correspond to lower p-values, making the statistic more
consistent with those of the other methods and with the majority of the
literature.scipy.linalg.expm
due to historical reasons was using the sparse
implementation and thus was accepting sparse arrays. Now it only works with
nDarrays. For sparse usage, scipy.sparse.linalg.expm
needs to be used
explicitly.scipy.stats.circvar
has reverted to the one that is
standard in the literature; note that this is not the same as the square of
scipy.stats.circstd
.QMCEngine
in MultinomialQMC
and
MultivariateNormalQMC
. It removes the methods fast_forward
and reset
.MultinomialQMC
now require the number of trials with n_trials
.
Hence, MultinomialQMC.random
output has now the correct shape (n, pvals)
.F_onewayConstantInputWarning
,
F_onewayBadInputSizesWarning
, PearsonRConstantInputWarning
,
PearsonRNearConstantInputWarning
, SpearmanRConstantInputWarning
, and
BootstrapDegenerateDistributionWarning
) have been replaced with more
general warnings.A draft developer CLI is available for SciPy, leveraging the doit
,
click
and rich-click
tools. For more details, see
gh-15959.
The SciPy contributor guide has been reorganized and updated (see #15947 for details).
QUADPACK Fortran routines in scipy.integrate
, which power
scipy.integrate.quad
, have been marked as recursive
. This should fix rare
issues in multivariate integration (nquad
and friends) and obviate the need
for compiler-specific compile flags (/recursive
for ifort etc). Please file
an issue if this change turns out problematic for you. This is also true for
FITPACK
routines in scipy.interpolate
, which power splrep
,
splev
etc., and *UnivariateSpline
and *BivariateSpline
classes.
the USE_PROPACK
environment variable has been renamed to
SCIPY_USE_PROPACK
; setting to a non-zero value will enable
the usage of the PROPACK
library as before
Building SciPy on windows with MSVC now requires at least the vc142 toolset (available in Visual Studio 2019 and higher).
Before this release, all subpackages of SciPy (cluster
, fft
, ndimage
,
etc.) had to be explicitly imported. Now, these subpackages are lazily loaded
as soon as they are accessed, so that the following is possible (if desired
for interactive use, it's not actually recommended for code,
see :ref:scipy-api
):
import scipy as sp; sp.fft.dct([1, 2, 3])
. Advantages include: making it
easier to navigate SciPy in interactive terminals, reducing subpackage import
conflicts (which before required
import networkx.linalg as nla; import scipy.linalg as sla
),
and avoiding repeatedly having to update imports during teaching &
experimentation. Also see
the related community specification document.
This is the first release that ships with Meson as
the build system. When installing with pip
or pypa/build
, Meson will be
used (invoked via the meson-python
build hook). This change brings
significant benefits - most importantly much faster build times, but also
better support for cross-compilation and cleaner build logs.
Note:
This release still ships with support for numpy.distutils
-based builds
as well. Those can be invoked through the setup.py
command-line
interface (e.g., python setup.py install
). It is planned to remove
numpy.distutils
support before the 1.10.0 release.
When building from source, a number of things have changed compared to building
with numpy.distutils
:
meson
, ninja
, and pkg-config
.
setuptools
and wheel
are no longer needed.pkg-config
instead of hardcoded
paths or a site.cfg
file.blas-lapack-selection
for
details.The two CLIs that can be used to build wheels are pip
and build
. In
addition, the SciPy repo contains a python dev.py
CLI for any kind of
development task (see its --help
for details). For a comparison between old
(distutils
) and new (meson
) build commands, see :ref:meson-faq
.
For more information on the introduction of Meson support in SciPy, see
gh-13615 <https://github.com/scipy/scipy/issues/13615>
__ and
this blog post <https://labs.quansight.org/blog/2021/07/moving-scipy-to-meson/>
__.
A total of 154 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.