Skip to content

Releases: scipy/scipy

SciPy 1.11.0rc2

16 Jun 20:39
v1.11.0rc2
Compare
Choose a tag to compare
SciPy 1.11.0rc2 Pre-release
Pre-release

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 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.
  • A new function was added for quasi-Monte Carlo integration, and linear
    algebra functions det and lu now accept nD-arrays.
  • An axes argument was added broadly to ndimage 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 method subset_size for providing the size
    of a particular subset.

scipy.constants improvements

  • The quetta, ronna, ronto, and quecto 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 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 improvements

  • scipy.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.
  • 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 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 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,
    while isinstance(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 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.
  • Sparse arrays constructed with int64 indices will no longer automatically
    downcast to int32.
  • The argmin and argmax 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 arrays
  • lobpcg 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 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 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 the fit 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, 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...
Read more

SciPy 1.11.0rc1

31 May 21:45
v1.11.0rc1
Compare
Choose a tag to compare
SciPy 1.11.0rc1 Pre-release
Pre-release

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 functions det and lu now accept nD-arrays.
  • An axes argument was added broadly to ndimage 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 method subset_size for providing the size
    of a particular subset.

scipy.constants improvements

  • The quetta, ronna, ronto, and quecto 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 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 improvements

  • scipy.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.
  • 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 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 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,
    while isinstance(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, use scipy.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
    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 improvements

  • dividing LinearOperator by a number now returns a
    _ScaledLinearOperator
  • LinearOperator now supports right multiplication by arrays
  • lobpcg 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 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 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 the fit 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, 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
      ...
Read more

SciPy 1.10.1

19 Feb 21:46
v1.10.1
Compare
Choose a tag to compare

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

03 Jan 22:48
v1.10.0
Compare
Choose a tag to compare

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 of scipy.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 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 improvements

  • Added parameter complex_func to scipy.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 and pchip)
  • Tensor-product interpolation methods (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 subclass
  • scipy.interpolate.interp1d now can take a single value for non-spline
    methods.
  • A new extrapolate argument is available to scipy.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. The lam=None (default) mode of this function is a clean-room
    reimplementation of the classic gcvspl.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, a scipy.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 and trsen.

  • 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.

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 by scipy.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-value args into a
    tuple.
  • scipy.optimize.least_squares and scipy.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 to scipy.optimize.linprog with method='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), 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 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
    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.

    • 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 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.
  • 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 ...
Read more

SciPy 1.10.0rc2

25 Dec 21:16
v1.10.0rc2
Compare
Choose a tag to compare
SciPy 1.10.0rc2 Pre-release
Pre-release

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 of scipy.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 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 improvements

  • Added scipy.integrate.qmc_quad, which performs quadrature using Quasi-Monte
    Carlo points.
  • Added parameter complex_func to scipy.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 and pchip)
  • Tensor-product interpolation methods (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 subclass
  • scipy.interpolate.interp1d now can take a single value for non-spline
    methods.
  • A new extrapolate argument is available to scipy.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. The lam=None (default) mode of this function is a clean-room
    reimplementation of the classic gcvspl.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, a scipy.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 and trsen.

  • 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.

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 by scipy.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-value args into a
    tuple.
  • scipy.optimize.least_squares and scipy.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 to scipy.optimize.linprog with method='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), 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 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
    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.

    • 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 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.
  • 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.gumbe...
Read more

SciPy 1.10.0rc1

12 Dec 01:37
v1.10.0rc1
Compare
Choose a tag to compare
SciPy 1.10.0rc1 Pre-release
Pre-release

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 of scipy.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 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 improvements

  • Added scipy.integrate.qmc_quad, which performs quadrature using Quasi-Monte
    Carlo points.
  • Added parameter complex_func to scipy.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 and pchip)
  • Tensor-product interpolation methods (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 subclass
  • scipy.interpolate.interp1d now can take a single value for non-spline
    methods.
  • A new extrapolate argument is available to scipy.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. The lam=None (default) mode of this function is a clean-room
    reimplementation of the classic gcvspl.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, a scipy.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 and trsen.

  • 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.

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 by scipy.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-value args into a
    tuple.
  • scipy.optimize.least_squares and scipy.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 to scipy.optimize.linprog with method='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), 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 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
    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.

    • 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 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.
  • 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 ``m...
Read more

SciPy 1.9.3

20 Oct 02:34
v1.9.3
Compare
Choose a tag to compare

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

08 Oct 23:03
v1.9.2
Compare
Choose a tag to compare

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

27 Aug 02:03
v1.9.1
Compare
Choose a tag to compare

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

29 Jul 13:54
v1.9.0
Compare
Choose a tag to compare

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 and scipy.interpolate.interpn
    now accept descending ordered points.
  • RegularGridInterpolator now handles length-1 grid axes.
  • The 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 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 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 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 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 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
    consistent dtype handling.

scipy.sparse improvements

  • Add a copy parameter to scipy.sparce.csgraph.laplacian. Using inplace
    computation with copy=False reduces the memory footprint.
  • Add a dtype parameter to scipy.sparce.csgraph.laplacian for type casting.
  • Add a symmetrized parameter to scipy.sparce.csgraph.laplacian to produce
    symmetric Laplacian for directed graphs.
  • Add a 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 improvements

  • lobpcg performance improvements for small input cases.

scipy.spatial improvements

  • Add an order parameter to scipy.spatial.transform.Rotation.from_quat
    and scipy.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 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
    c...

Read more