Releases: scipy/scipy
SciPy 1.11.0rc2
SciPy 1.11.0 Release Notes
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.
Highlights of this release
- Several
scipy.sparse
array API improvements, includingsparse.sparray
, a new
public base class distinct from the oldersparse.spmatrix
class,
proper 64-bit index support, and numerous deprecations paving the way to a
modern sparse array experience. scipy.stats
added tools for survival analysis, multiple hypothesis testing,
sensitivity analysis, and working with censored data.- A new function was added for quasi-Monte Carlo integration, and linear
algebra functionsdet
andlu
now accept nD-arrays. - An
axes
argument was added broadly tondimage
functions, facilitating
analysis of stacked image data.
New features
scipy.integrate
improvements
- Added
scipy.integrate.qmc_quad
for quasi-Monte Carlo integration. - For an even number of points,
scipy.integrate.simpson
now calculates
a parabolic segment over the last three points which gives improved
accuracy over the previous implementation.
scipy.cluster
improvements
disjoint_set
has a new methodsubset_size
for providing the size
of a particular subset.
scipy.constants
improvements
- The
quetta
,ronna
,ronto
, andquecto
SI prefixes were added.
scipy.linalg
improvements
scipy.linalg.det
is improved and now accepts nD-arrays.scipy.linalg.lu
is improved and now accepts nD-arrays. With the new
p_indices
switch the output permutation argument can be 1D(n,)
permutation index instead of the full(n, n)
array.
scipy.ndimage
improvements
axes
argument was added torank_filter
,percentile_filter
,
median_filter
,uniform_filter
,minimum_filter
,
maximum_filter
, andgaussian_filter
, which can be useful for
processing stacks of image data.
scipy.optimize
improvements
scipy.optimize.linprog
now passes unrecognized options directly to HiGHS.scipy.optimize.root_scalar
now uses Newton's method to be used without
providingfprime
and thesecant
method to be used without a second
guess.scipy.optimize.lsq_linear
now acceptsbounds
arguments of type
scipy.optimize.Bounds
.scipy.optimize.minimize
method='cobyla'
now supports simple bound
constraints.- Users can opt into a new callback interface for most methods of
scipy.optimize.minimize
: If the provided callback callable accepts
a single keyword argument,intermediate_result
,scipy.optimize.minimize
now passes both the current solution and the optimal value of the objective
function to the callback as an instance ofscipy.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 optionalnan_policy
argument.scipy.optimize.shgo
now has parallelization with theworkers
argument,
symmetry arguments that can improve performance, class-based design to
improve usability, and generally improved performance.
scipy.signal
improvements
istft
has an improved warning message when the NOLA condition fails.
scipy.sparse
improvements
- A new public base class
scipy.sparse.sparray
was introduced, allowing further
extension of the sparse array API (such as the support for 1-dimensional
sparse arrays) without breaking backwards compatibility.
isinstance(x, scipy.sparse.sparray)
to select the new sparse array classes,
whileisinstance(x, scipy.sparse.spmatrix)
selects only the old sparse
matrix classes. - Division of sparse arrays by a dense array now returns sparse arrays.
scipy.sparse.isspmatrix
now only returnsTrue
for the sparse matrices instances.
scipy.sparse.issparse
now has to be used instead to check for instances of sparse
arrays or instances of sparse matrices.- Sparse arrays constructed with int64 indices will no longer automatically
downcast to int32. - The
argmin
andargmax
methods now return the correct result when explicit
zeros are present.
scipy.sparse.linalg
improvements
- dividing
LinearOperator
by a number now returns a
_ScaledLinearOperator
LinearOperator
now supports right multiplication by arrayslobpcg
should be more efficient following removal of an extraneous
QR decomposition.
scipy.spatial
improvements
- Usage of new C++ backend for additional distance metrics, the majority of
which will see substantial performance improvements, though a few minor
regressions are known. These are focused on distances between boolean
arrays.
scipy.special
improvements
- The factorial functions
factorial
,factorial2
andfactorialk
were made consistent in their behavior (in terms of dimensionality,
errors etc.). Additionally,factorial2
can now handle arrays with
exact=True
, andfactorialk
can handle arrays.
scipy.stats
improvements
New Features
scipy.stats.sobol_indices
, a method to compute Sobol' sensitivity indices.scipy.stats.dunnett
, which performs Dunnett's test of the means of multiple
experimental groups against the mean of a control group.scipy.stats.ecdf
for computing the empirical CDF and complementary
CDF (survival function / SF) from uncensored or right-censored data. This
function is also useful for survival analysis / Kaplan-Meier estimation.scipy.stats.logrank
to compare survival functions underlying samples.scipy.stats.false_discovery_control
for adjusting p-values to control the
false discovery rate of multiple hypothesis tests using the
Benjamini-Hochberg or Benjamini-Yekutieli procedures.scipy.stats.CensoredData
to represent censored data. It can be used as
input to thefit
method of univariate distributions and to the new
ecdf
function.- Filliben's goodness of fit test as
method='Filliben'
of
scipy.stats.goodness_of_fit
. scipy.stats.ttest_ind
has a new method,confidence_interval
for
computing a confidence interval of the difference between means.scipy.stats.MonteCarloMethod
,scipy.stats.PermutationMethod
, and
scipy.stats.BootstrapMethod
are new classes to configure resampling and/or
Monte Carlo versions of hypothesis tests. They can currently be used with
scipy.stats.pearsonr
.
Statistical Distributions
-
Added the von-Mises Fisher distribution as
scipy.stats.vonmises_fisher
.
This distribution is the most common analogue of the normal distribution
on the unit sphere. -
Added the relativistic Breit-Wigner distribution as
scipy.stats.rel_breitwigner
.
It is used in high energy physics to model resonances. -
Added the Dirichlet multinomial distribution as
scipy.stats.dirichlet_multinomial
. -
Improved the speed and precision of several univariate statistical
distributions.scipy.stats.anglit
sf
scipy.stats.beta
entropy
scipy.stats.betaprime
cdf
,sf
,ppf
scipy.stats.chi
entropy
scipy.stats.chi2
entropy
scipy.stats.dgamma
entropy
,cdf
,sf
,ppf
, andisf
scipy.stats.dweibull
entropy
,sf
, andisf
scipy.stats.exponweib
sf
andisf
scipy.stats.f
entropy
scipy.stats.foldcauchy
sf
scipy.stats.foldnorm
cdf
andsf
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
,
andisf
scipy.stats.genhyperbolic
cdf
andsf
scipy.stats.gibrat
sf
andisf
scipy.stats.gompertz
entropy
,sf
. andisf
scipy.stats.halflogistic
sf
, andisf
scipy.stats.halfcauchy
sf
andisf
scipy.stats.halfnorm
cdf
,sf
, andisf
scipy.stats.invgamma
entropy
scipy.stats.invgauss
entropy
scipy.stats.johnsonsb
pdf
,cdf
,sf
,ppf
, andisf
scipy.stats.johnsonsu
pdf
,sf
,isf
, andstats
scipy.stats.lognorm
fit
scipy.stats.loguniform
entropy
,logpdf
,pdf
,cdf
,ppf
,
andstats
scipy.stats.maxwell
sf
andisf
scipy.stats.nakagami
entropy
- `scipy.stats...
SciPy 1.11.0rc1
SciPy 1.11.0 Release Notes
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.
Highlights of this release
- Several
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. - Added three new statistical distributions, and wide-ranging performance and
precision improvements to several other statistical distributions. - A new function was added for quasi-Monte Carlo integration, and linear
algebra functionsdet
andlu
now accept nD-arrays. - An
axes
argument was added broadly tondimage
functions, facilitating
analysis of stacked image data.
New features
scipy.integrate
improvements
- Added
scipy.integrate.qmc_quad
for quasi-Monte Carlo integration. - For an even number of points,
scipy.integrate.simpson
now calculates
a parabolic segment over the last three points which gives improved
accuracy over the previous implementation.
scipy.cluster
improvements
disjoint_set
has a new methodsubset_size
for providing the size
of a particular subset.
scipy.constants
improvements
- The
quetta
,ronna
,ronto
, andquecto
SI prefixes were added.
scipy.linalg
improvements
scipy.linalg.det
is improved and now accepts nD-arrays.scipy.linalg.lu
is improved and now accepts nD-arrays. With the new
p_indices
switch the output permutation argument can be 1D(n,)
permutation index instead of the full(n, n)
array.
scipy.ndimage
improvements
axes
argument was added torank_filter
,percentile_filter
,
median_filter
,uniform_filter
,minimum_filter
,
maximum_filter
, andgaussian_filter
, which can be useful for
processing stacks of image data.
scipy.optimize
improvements
scipy.optimize.linprog
now passes unrecognized options directly to HiGHS.scipy.optimize.root_scalar
now uses Newton's method to be used without
providingfprime
and thesecant
method to be used without a second
guess.scipy.optimize.lsq_linear
now acceptsbounds
arguments of type
scipy.optimize.Bounds
.scipy.optimize.minimize
method='cobyla'
now supports simple bound
constraints.- Users can opt into a new callback interface for most methods of
scipy.optimize.minimize
: If the provided callback callable accepts
a single keyword argument,intermediate_result
,scipy.optimize.minimize
now passes both the current solution and the optimal value of the objective
function to the callback as an instance ofscipy.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 optionalnan_policy
argument.scipy.optimize.shgo
now has parallelization with theworkers
argument,
symmetry arguments that can improve performance, class-based design to
improve usability, and generally improved performance.
scipy.signal
improvements
istft
has an improved warning message when the NOLA condition fails.
scipy.sparse
improvements
scipy.sparse
array (not matrix) classes now return a sparse array instead
of a dense array when divided by a dense array.- A new public base class
scipy.sparse.sparray
was introduced, allowing
isinstance(x, scipy.sparse.sparray)
to select the new sparse array classes,
whileisinstance(x, scipy.sparse.spmatrix)
selects only the old sparse
matrix types. - The behavior of
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, usescipy.sparse.issparse()
instead. (Previously,
these had identical behavior.) - Sparse arrays constructed with 64-bit indices will no longer automatically
downcast to 32-bit. - A new
scipy.sparse.diags_array
function was added, which behaves like the
existingscipy.sparse.diags
function except that it returns a sparse
array instead of a sparse matrix. argmin
andargmax
methods now return the correct result when no
implicit zeros are present.
scipy.sparse.linalg
improvements
- dividing
LinearOperator
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
improvements
- Usage of new C++ backend for additional distance metrics, the majority of
which will see substantial performance improvements, though a few minor
regressions are known. These are focused on distances between boolean
arrays.
scipy.special
improvements
- The factorial functions
factorial
,factorial2
andfactorialk
were made consistent in their behavior (in terms of dimensionality,
errors etc.). Additionally,factorial2
can now handle arrays with
exact=True
, andfactorialk
can handle arrays.
scipy.stats
improvements
New Features
scipy.stats.sobol_indices
, a method to compute Sobol' sensitivity indices.scipy.stats.dunnett
, which performs Dunnett's test of the means of multiple
experimental groups against the mean of a control group.scipy.stats.ecdf
for computing the empirical CDF and complementary
CDF (survival function / SF) from uncensored or right-censored data. This
function is also useful for survival analysis / 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 thefit
method of univariate distributions and to the new
ecdf
function.- Filliben's goodness of fit test as
method='Filliben'
of
scipy.stats.goodness_of_fit
. scipy.stats.ttest_ind
has a new method,confidence_interval
for
computing 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
.
Statistical Distributions
-
Added the von-Mises Fisher distribution as
scipy.stats.vonmises_fisher
.
This distribution is the most common analogue of the normal distribution
on the unit sphere. -
Added the relativistic Breit-Wigner distribution as
scipy.stats.rel_breitwigner
.
It is used in high energy physics to model resonances. -
Added the Dirichlet multinomial distribution as
scipy.stats.dirichlet_multinomial
. -
Improved the speed and precision of several univariate statistical
distributions.scipy.stats.anglit
sf
scipy.stats.beta
entropy
scipy.stats.betaprime
cdf
,sf
,ppf
scipy.stats.chi
entropy
scipy.stats.chi2
entropy
scipy.stats.dgamma
entropy
,cdf
,sf
,ppf
, andisf
scipy.stats.dweibull
entropy
,sf
, andisf
scipy.stats.exponweib
sf
andisf
scipy.stats.f
entropy
scipy.stats.foldcauchy
sf
scipy.stats.foldnorm
cdf
andsf
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
,
andisf
scipy.stats.genhyperbolic
cdf
andsf
scipy.stats.gibrat
sf
andisf
scipy.stats.gompertz
entropy
,sf
. andisf
scipy.stats.halflogistic
sf
, andisf
scipy.stats.halfcauchy
sf
andisf
scipy.stats.halfnorm
cdf
,sf
, andisf
scipy.stats.invgamma
entropy
scipy.stats.invgauss
entropy
scipy.stats.johnsonsb
pdf
,cdf
,sf
,ppf
, andisf
scipy.stats.johnsonsu
pdf
,sf
,isf
, andstats
scipy.stats.lognorm
fit
scipy.stats.loguniform
entropy
,logpdf
,pdf
,cdf
,ppf
,
andstats
...
SciPy 1.10.1
SciPy 1.10.1 Release Notes
SciPy 1.10.1
is a bug-fix release with no new features
compared to 1.10.0
.
Authors
- Name (commits)
- alice (1) +
- Matt Borland (2) +
- Evgeni Burovski (2)
- CJ Carey (1)
- Ralf Gommers (9)
- Brett Graham (1) +
- Matt Haberland (5)
- Alex Herbert (1) +
- Ganesh Kathiresan (2) +
- Rishi Kulkarni (1) +
- Loïc Estève (1)
- Michał Górny (1) +
- Jarrod Millman (1)
- Andrew Nelson (4)
- Tyler Reddy (50)
- Pamphile Roy (2)
- Eli Schwartz (2)
- Tomer Sery (1) +
- Kai Striega (1)
- Jacopo Tissino (1) +
- windows-server-2003 (1)
A total of 21 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
SciPy 1.10.0
SciPy 1.10.0 Release Notes
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.
Highlights of this release
- A new dedicated datasets submodule (
scipy.datasets
) has been added, and is
now preferred over usage ofscipy.misc
for dataset retrieval. - A new
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.
New features
scipy.datasets
introduction
-
A 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 fromscipy.misc
have been added toscipy.datasets
(and deprecated inscipy.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 thescipy.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
improvements
- Added parameter
complex_func
toscipy.integrate.quad
, which can be set
True
to integrate a complex integrand.
scipy.interpolate
improvements
scipy.interpolate.interpn
now supports tensor-product interpolation methods
(slinear
,cubic
,quintic
andpchip
)- Tensor-product interpolation methods (
slinear
,cubic
,quintic
and
pchip
) inscipy.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, andRegularGridInterpolator
is now
easier to subclassscipy.interpolate.interp1d
now can take a single value for non-spline
methods.- A new
extrapolate
argument is available toscipy.interpolate.BSpline.design_matrix
,
allowing extrapolation based on the first and last intervals. - A new function
scipy.interpolate.make_smoothing_spline
has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. Thelam=None
(default) mode of this function is a clean-room
reimplementation of the classicgcvspl.f
Fortran algorithm for
constructing GCV splines. - A new
method="pchip"
mode was aded to
scipy.interpolate.RegularGridInterpolator
. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, ascipy.interpolate.PchipInterpolator
instance per
dimension).
scipy.sparse.linalg
improvements
-
The 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
andtrsen
. -
The
scipy.sparse.linalg.lobpcg
algorithm was rewritten, yielding
the following improvements:- a simple tunable restart potentially increases the attainable
accuracy for edge cases, - internal postprocessing runs one final exact Rayleigh-Ritz method
giving more accurate and orthonormal eigenvectors, - output the computed iterate with the smallest max norm of the residual
and drop the history of subsequent iterations, - remove the check for
LinearOperator
format input and thus allow
a simple function handle of a callable object as an input, - better handling of common user errors with input data, rather
than letting the algorithm fail.
- a simple tunable restart potentially increases the attainable
scipy.linalg
improvements
scipy.linalg.lu_factor
now accepts rectangular arrays instead of being restricted
to square arrays.
scipy.ndimage
improvements
- The new
scipy.ndimage.value_indices
function provides a time-efficient method to
search for the locations of individual values with an array of image data. - A new
radius
argument is supported byscipy.ndimage.gaussian_filter1d
and
scipy.ndimage.gaussian_filter
for adjusting the kernel size of the filter.
scipy.optimize
improvements
scipy.optimize.brute
now coerces non-iterable/single-valueargs
into a
tuple.scipy.optimize.least_squares
andscipy.optimize.curve_fit
now accept
scipy.optimize.Bounds
for bounds constraints.- Added a tutorial for
scipy.optimize.milp
. - Improved the pretty-printing of
scipy.optimize.OptimizeResult
objects. - Additional options (
parallel
,threads
,mip_rel_gap
) can now
be passed toscipy.optimize.linprog
withmethod='highs'
.
scipy.signal
improvements
- The new window function
scipy.signal.windows.lanczos
was added to compute a
Lanczos window, also known as a sinc window.
scipy.sparse.csgraph
improvements
- the performance of
scipy.sparse.csgraph.dijkstra
has been improved, and
star graphs in particular see a marked performance improvement
scipy.special
improvements
- The new function
scipy.special.powm1
, a ufunc with signature
powm1(x, y)
, computesx**y - 1
. The function avoids the loss of
precision that can result wheny
is close to 0 or whenx
is close to
1. scipy.special.erfinv
is now more accurate as it leverages the Boost equivalent under
the hood.
scipy.stats
improvements
-
Added
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
parameterbootstrap_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.
- Added
scipy.stats.contingency.odds_ratio
to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables. - Added
scipy.stats.directional_stats
to compute sample statistics of
n-dimensional directional data. - Added
scipy.stats.expectile
, which generalizes the expected value in the
same way as quantiles are a generalization of the median.
- Added
-
Added new statistical distributions.
- Added
scipy.stats.uniform_direction
, a multivariate distribution to
sample uniformly from the surface of a hypersphere. - Added
scipy.stats.random_table
, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals. - Added
scipy.stats.truncpareto
, the truncated Pareto distribution.
- Added
-
Improved the
fit
method of several distributions.scipy.stats.skewnorm
andscipy.stats.weibull_min
now use an analytical
solution whenmethod='mm'
, which also serves a starting guess to
improve the performance ofmethod='mle'
.scipy.stats.gumbel_r
andscipy.stats.gumbel_l
: analytical maximum
likelihood estimates have been extended to the cases in which location or
scale are fixed ...
SciPy 1.10.0rc2
SciPy 1.10.0 Release Notes
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.
Highlights of this release
- A new dedicated datasets submodule (
scipy.datasets
) has been added, and is
now preferred over usage ofscipy.misc
for dataset retrieval. - A new
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.
New features
scipy.datasets
introduction
-
A 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 fromscipy.misc
have been added toscipy.datasets
(and deprecated inscipy.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 thescipy.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
improvements
- Added
scipy.integrate.qmc_quad
, which performs quadrature using Quasi-Monte
Carlo points. - Added parameter
complex_func
toscipy.integrate.quad
, which can be set
True
to integrate a complex integrand.
scipy.interpolate
improvements
scipy.interpolate.interpn
now supports tensor-product interpolation methods
(slinear
,cubic
,quintic
andpchip
)- Tensor-product interpolation methods (
slinear
,cubic
,quintic
and
pchip
) inscipy.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, andRegularGridInterpolator
is now
easier to subclassscipy.interpolate.interp1d
now can take a single value for non-spline
methods.- A new
extrapolate
argument is available toscipy.interpolate.BSpline.design_matrix
,
allowing extrapolation based on the first and last intervals. - A new function
scipy.interpolate.make_smoothing_spline
has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. Thelam=None
(default) mode of this function is a clean-room
reimplementation of the classicgcvspl.f
Fortran algorithm for
constructing GCV splines. - A new
method="pchip"
mode was aded to
scipy.interpolate.RegularGridInterpolator
. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, ascipy.interpolate.PchipInterpolator
instance per
dimension).
scipy.sparse.linalg
improvements
-
The 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
andtrsen
. -
The
scipy.sparse.linalg.lobpcg
algorithm was rewritten, yielding
the following improvements:- a simple tunable restart potentially increases the attainable
accuracy for edge cases, - internal postprocessing runs one final exact Rayleigh-Ritz method
giving more accurate and orthonormal eigenvectors, - output the computed iterate with the smallest max norm of the residual
and drop the history of subsequent iterations, - remove the check for
LinearOperator
format input and thus allow
a simple function handle of a callable object as an input, - better handling of common user errors with input data, rather
than letting the algorithm fail.
- a simple tunable restart potentially increases the attainable
scipy.linalg
improvements
scipy.linalg.lu_factor
now accepts rectangular arrays instead of being restricted
to square arrays.
scipy.ndimage
improvements
- The new
scipy.ndimage.value_indices
function provides a time-efficient method to
search for the locations of individual values with an array of image data. - A new
radius
argument is supported byscipy.ndimage.gaussian_filter1d
and
scipy.ndimage.gaussian_filter
for adjusting the kernel size of the filter.
scipy.optimize
improvements
scipy.optimize.brute
now coerces non-iterable/single-valueargs
into a
tuple.scipy.optimize.least_squares
andscipy.optimize.curve_fit
now accept
scipy.optimize.Bounds
for bounds constraints.- Added a tutorial for
scipy.optimize.milp
. - Improved the pretty-printing of
scipy.optimize.OptimizeResult
objects. - Additional options (
parallel
,threads
,mip_rel_gap
) can now
be passed toscipy.optimize.linprog
withmethod='highs'
.
scipy.signal
improvements
- The new window function
scipy.signal.windows.lanczos
was added to compute a
Lanczos window, also known as a sinc window.
scipy.sparse.csgraph
improvements
- the performance of
scipy.sparse.csgraph.dijkstra
has been improved, and
star graphs in particular see a marked performance improvement
scipy.special
improvements
- The new function
scipy.special.powm1
, a ufunc with signature
powm1(x, y)
, computesx**y - 1
. The function avoids the loss of
precision that can result wheny
is close to 0 or whenx
is close to
1. scipy.special.erfinv
is now more accurate as it leverages the Boost equivalent under
the hood.
scipy.stats
improvements
-
Added
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
parameterbootstrap_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.
- Added
scipy.stats.contingency.odds_ratio
to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables. - Added
scipy.stats.directional_stats
to compute sample statistics of
n-dimensional directional data. - Added
scipy.stats.expectile
, which generalizes the expected value in the
same way as quantiles are a generalization of the median.
- Added
-
Added new statistical distributions.
- Added
scipy.stats.uniform_direction
, a multivariate distribution to
sample uniformly from the surface of a hypersphere. - Added
scipy.stats.random_table
, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals. - Added
scipy.stats.truncpareto
, the truncated Pareto distribution.
- Added
-
Improved the
fit
method of several distributions.scipy.stats.skewnorm
andscipy.stats.weibull_min
now use an analytical
solution whenmethod='mm'
, which also serves a starting guess to
improve the performance ofmethod='mle'
.- `scipy.stats.gumbe...
SciPy 1.10.0rc1
SciPy 1.10.0 Release Notes
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.
Highlights of this release
- A new dedicated datasets submodule (
scipy.datasets
) has been added, and is
now preferred over usage ofscipy.misc
for dataset retrieval. - A new
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.
New features
scipy.datasets
introduction
-
A 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 fromscipy.misc
have been added toscipy.datasets
(and deprecated inscipy.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 thescipy.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
improvements
- Added
scipy.integrate.qmc_quad
, which performs quadrature using Quasi-Monte
Carlo points. - Added parameter
complex_func
toscipy.integrate.quad
, which can be set
True
to integrate a complex integrand.
scipy.interpolate
improvements
scipy.interpolate.interpn
now supports tensor-product interpolation methods
(slinear
,cubic
,quintic
andpchip
)- Tensor-product interpolation methods (
slinear
,cubic
,quintic
and
pchip
) inscipy.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, andRegularGridInterpolator
is now
easier to subclassscipy.interpolate.interp1d
now can take a single value for non-spline
methods.- A new
extrapolate
argument is available toscipy.interpolate.BSpline.design_matrix
,
allowing extrapolation based on the first and last intervals. - A new function
scipy.interpolate.make_smoothing_spline
has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. Thelam=None
(default) mode of this function is a clean-room
reimplementation of the classicgcvspl.f
Fortran algorithm for
constructing GCV splines. - A new
method="pchip"
mode was aded to
scipy.interpolate.RegularGridInterpolator
. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, ascipy.interpolate.PchipInterpolator
instance per
dimension).
scipy.sparse.linalg
improvements
-
The 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
andtrsen
. -
The
scipy.sparse.linalg.lobpcg
algorithm was rewritten, yielding
the following improvements:- a simple tunable restart potentially increases the attainable
accuracy for edge cases, - internal postprocessing runs one final exact Rayleigh-Ritz method
giving more accurate and orthonormal eigenvectors, - output the computed iterate with the smallest max norm of the residual
and drop the history of subsequent iterations, - remove the check for
LinearOperator
format input and thus allow
a simple function handle of a callable object as an input, - better handling of common user errors with input data, rather
than letting the algorithm fail.
- a simple tunable restart potentially increases the attainable
scipy.linalg
improvements
scipy.linalg.lu_factor
now accepts rectangular arrays instead of being restricted
to square arrays.
scipy.ndimage
improvements
- The new
scipy.ndimage.value_indices
function provides a time-efficient method to
search for the locations of individual values with an array of image data. - A new
radius
argument is supported byscipy.ndimage.gaussian_filter1d
and
scipy.ndimage.gaussian_filter
for adjusting the kernel size of the filter.
scipy.optimize
improvements
scipy.optimize.brute
now coerces non-iterable/single-valueargs
into a
tuple.scipy.optimize.least_squares
andscipy.optimize.curve_fit
now accept
scipy.optimize.Bounds
for bounds constraints.- Added a tutorial for
scipy.optimize.milp
. - Improved the pretty-printing of
scipy.optimize.OptimizeResult
objects. - Additional options (
parallel
,threads
,mip_rel_gap
) can now
be passed toscipy.optimize.linprog
withmethod='highs'
.
scipy.signal
improvements
- The new window function
scipy.signal.windows.lanczos
was added to compute a
Lanczos window, also known as a sinc window.
scipy.sparse.csgraph
improvements
- the performance of
scipy.sparse.csgraph.dijkstra
has been improved, and
star graphs in particular see a marked performance improvement
scipy.special
improvements
- The new function
scipy.special.powm1
, a ufunc with signature
powm1(x, y)
, computesx**y - 1
. The function avoids the loss of
precision that can result wheny
is close to 0 or whenx
is close to
1. scipy.special.erfinv
is now more accurate as it leverages the Boost equivalent under
the hood.
scipy.stats
improvements
-
Added
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
parameterbootstrap_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.
- Added
scipy.stats.contingency.odds_ratio
to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables. - Added
scipy.stats.directional_stats
to compute sample statistics of
n-dimensional directional data. - Added
scipy.stats.expectile
, which generalizes the expected value in the
same way as quantiles are a generalization of the median.
- Added
-
Added new statistical distributions.
- Added
scipy.stats.uniform_direction
, a multivariate distribution to
sample uniformly from the surface of a hypersphere. - Added
scipy.stats.random_table
, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals. - Added
scipy.stats.truncpareto
, the truncated Pareto distribution.
- Added
-
Improved the
fit
method of several distributions.scipy.stats.skewnorm
andscipy.stats.weibull_min
now use an analytical
solution whenmethod='mm'
, which also serves a starting guess to
improve the performance of ``m...
SciPy 1.9.3
SciPy 1.9.3 Release Notes
SciPy 1.9.3
is a bug-fix release with no new features
compared to 1.9.2
.
Authors
- Jelle Aalbers (1)
- Peter Bell (1)
- Jake Bowhay (3)
- Matthew Brett (3)
- Evgeni Burovski (5)
- drpeteb (1) +
- Sebastian Ehlert (1) +
- GavinZhang (1) +
- Ralf Gommers (2)
- Matt Haberland (15)
- Lakshaya Inani (1) +
- Joseph T. Iosue (1)
- Nathan Jacobi (1) +
- jmkuebler (1) +
- Nikita Karetnikov (1) +
- Lechnio (1) +
- Nicholas McKibben (1)
- Andrew Nelson (1)
- o-alexandre-felipe (1) +
- Tirth Patel (1)
- Tyler Reddy (51)
- Martin Reinecke (1)
- Marie Roald (1) +
- Pamphile Roy (2)
- Eli Schwartz (1)
- serge-sans-paille (1)
- ehsan shirvanian (1) +
- Mamoru TASAKA (1) +
- Samuel Wallan (1)
- Warren Weckesser (7)
- Gavin Zhang (1) +
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
SciPy 1.9.2 Release Notes
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.
Authors
- Hood Chatham (1)
- Thomas J. Fan (1)
- Ralf Gommers (22)
- Matt Haberland (5)
- Julien Jerphanion (1)
- Loïc Estève (1)
- Nicholas McKibben (2)
- Naoto Mizuno (1)
- Andrew Nelson (3)
- Tyler Reddy (28)
- Pamphile Roy (1)
- Ewout ter Hoeven (2)
- Warren Weckesser (1)
- Meekail Zain (1) +
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
SciPy 1.9.1 Release Notes
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.
Authors
- Anirudh Dagar (1)
- Ralf Gommers (12)
- Matt Haberland (2)
- Andrew Nelson (1)
- Tyler Reddy (14)
- Atsushi Sakai (1)
- Eli Schwartz (1)
- Warren Weckesser (2)
A total of 8 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
SciPy 1.9.0
SciPy 1.9.0 Release Notes
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.
Highlights of this release
- We have modernized our build system to use
meson
, substantially improving
our build performance, and providing better build-time configuration and
cross-compilation support, - Added
scipy.optimize.milp
, new function for mixed-integer linear
programming, - Added
scipy.stats.fit
for fitting discrete and continuous distributions
to data, - Tensor-product spline interpolation modes were added to
scipy.interpolate.RegularGridInterpolator
, - A new global optimizer (DIviding RECTangles algorithm)
scipy.optimize.direct
.
New features
scipy.interpolate
improvements
- Speed up the
RBFInterpolator
evaluation with high dimensional
interpolants. - Added new spline based interpolation methods for
scipy.interpolate.RegularGridInterpolator
and its tutorial. scipy.interpolate.RegularGridInterpolator
andscipy.interpolate.interpn
now accept descending ordered points.RegularGridInterpolator
now handles length-1 grid axes.- The
BivariateSpline
subclasses have a new methodpartial_derivative
which constructs a new spline object representing a derivative of an
original spline. This mirrors the corresponding functionality for univariate
splines,splder
andBSpline.derivative
, and can substantially speed
up repeated evaluation of derivatives.
scipy.linalg
improvements
scipy.linalg.expm
now accepts nD arrays. Its speed is also improved.- Minimum required LAPACK version is bumped to
3.7.1
.
scipy.fft
improvements
- Added
uarray
multimethods forscipy.fft.fht
andscipy.fft.ifht
to allow provision of third party backend implementations such as those
recently added to CuPy.
scipy.optimize
improvements
-
A 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
anddifferential_evolution
) in terms
of execution time. See
gh-14300 <https://github.com/scipy/scipy/pull/14300>
__ for more details. -
Add a
full_output
parameter toscipy.optimize.curve_fit
to output
additional solution information. -
Add a
integrality
parameter toscipy.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 inshgo
anddual_annealing
for
a more uniform API acrossscipy.optimize
. -
Added the
vectorized
keyword todifferential_evolution
. -
approx_fprime
now works with vector-valued functions.
scipy.signal
improvements
- The new window function
scipy.signal.windows.kaiser_bessel_derived
was
added to compute the Kaiser-Bessel derived window. - Single-precision
hilbert
operations are now faster as a result of more
consistentdtype
handling.
scipy.sparse
improvements
- Add a
copy
parameter toscipy.sparce.csgraph.laplacian
. Using inplace
computation withcopy=False
reduces the memory footprint. - Add a
dtype
parameter toscipy.sparce.csgraph.laplacian
for type casting. - Add a
symmetrized
parameter toscipy.sparce.csgraph.laplacian
to produce
symmetric Laplacian for directed graphs. - Add a
form
parameter toscipy.sparce.csgraph.laplacian
taking one of the
three values:array
, orfunction
, orlo
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 theLinearOperator
.
scipy.sparse.linalg
improvements
lobpcg
performance improvements for small input cases.
scipy.spatial
improvements
- Add an
order
parameter toscipy.spatial.transform.Rotation.from_quat
andscipy.spatial.transform.Rotation.as_quat
to specify quaternion format.
scipy.stats
improvements
-
scipy.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 likescipy.stats.ks_1samp
,
scipy.stats.normaltest
, andscipy.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 newaxis
(integer or tuple of
integers) andnan_policy
('raise', 'omit', or 'propagate'), and
keepdims
arguments.
These functions also support masked arrays as inputs, even if they do not have
ascipy.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 toscipy.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 parameteralpha
close to or equal to 1
and foralpha
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 thatdelta
andgamma
are proper location and scale parameters. Withdelta
andgamma
fixed,
the location and scale of the resulting distribution remain unchanged as
alpha
andbeta
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"
fromscipy.stats.combine_pvalues
have been fixed to return the correct p-values, resolving
#15373. In addition, the
documentation forscipy.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 thatstats.mode
will now consume the input axis and return an
ndarray with theaxis
dimension removed. -
Replaced implementation of
scipy.stats.ncf
with the implementation from
Boost for improved reliability. -
Add a
bits
parameter toscipy.stats.qmc.Sobol
. It allows to use from 0
to 64 bits to compute the sequence. Default isNone
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 toscipy.stats.qmc.QMCEngine
. It allows sampling
integers using any QMC sampler. -
Improved the fit speed and accuracy of
stats.pareto
. -
Added
qrvs
method toNumericalInversePolynomial
to match the
situation forNumericalInverseHermite
. -
Faster random variate generation for
gennorm
andnakagami
. -
lloyd_centroidal_voronoi_tessellation
has been added to allow improved
sample distributions via iterative application of Voronoi diagrams and
c...