SciPy 1.14.0
SciPy 1.14.0 Release Notes
SciPy 1.14.0 is the culmination of 3 months of hard work. It contains
many new features, numerous bug-fixes, improved test coverage and better
documentation. There have been a number of deprecations and API changes
in this release, which are documented below. All users are encouraged to
upgrade to this release, as there are a large number of bug-fixes and
optimizations. Before upgrading, we recommend that users check that
their own code does not use deprecated SciPy functionality (to do so,
run your code with python -Wd and check for DeprecationWarning s).
Our development attention will now shift to bug-fix releases on the
1.14.x branch, and on adding new features on the main branch.
This release requires Python 3.10+ and NumPy 1.23.5 or greater.
For running on PyPy, PyPy3 6.0+ is required.
Highlights of this release
- SciPy now supports the new Accelerate library introduced in macOS 13.3, and
has wheels built against Accelerate for macOS >=14 resulting in significant
performance improvements for many linear algebra operations. - A new method,
cobyqa, has been added toscipy.optimize.minimize- this
is an interface for COBYQA (Constrained Optimization BY Quadratic
Approximations), a derivative-free optimization solver, designed to
supersede COBYLA, developed by the Department of Applied Mathematics, The
Hong Kong Polytechnic University. scipy.sparse.linalg.spsolve_triangularis now more than an order of
magnitude faster in many cases.
New features
scipy.fft improvements
- A new function,
scipy.fft.prev_fast_len, has been added. This function
finds the largest composite of FFT radices that is less than the target
length. It is useful for discarding a minimal number of samples before FFT.
scipy.io improvements
wavfilenow supports reading and writing ofwavfiles in the RF64
format, allowing files greater than 4 GB in size to be handled.
scipy.constants improvements
- Experimental support for the array API standard has been added.
scipy.interpolate improvements
scipy.interpolate.Akima1DInterpolatornow supports extrapolation via the
extrapolateargument.
scipy.optimize improvements
scipy.optimize.HessianUpdateStrategynow also accepts square arrays for
init_scale.- A new method,
cobyqa, has been added toscipy.optimize.minimize- this
is an interface for COBYQA (Constrained Optimization BY Quadratic
Approximations), a derivative-free optimization solver, designed to
supersede COBYLA, developed by the Department of Applied Mathematics, The
Hong Kong Polytechnic University. - There are some performance improvements in
scipy.optimize.differential_evolution. scipy.optimize.approx_fprimenow has linear space complexity.
scipy.signal improvements
scipy.signal.minimum_phasehas a new argumenthalf, allowing the
provision of a filter of the same length as the linear-phase FIR filter
coefficients and with the same magnitude spectrum.
scipy.sparse improvements
- Sparse arrays now support 1D shapes in COO, DOK and CSR formats.
These are all the formats we currently intend to support 1D shapes.
Other sparse array formats raise an exception for 1D input. - Sparse array methods min/nanmin/argmin and max analogs now return 1D arrays.
Results are still COO format sparse arrays for min/nanmin and
densenp.ndarrayfor argmin. - Iterating over
csr_arrayorcsc_arrayyields 1D (CSC) arrays. - Sparse matrix and array objects improve their
reprandstroutput. - A special case has been added to handle multiplying a
dia_arrayby a
scalar, which avoids a potentially costly conversion to CSR format. scipy.sparse.csgraph.yenhas been added, allowing usage of Yen's K-Shortest
Paths algorithm on a directed on undirected graph.- Addition between DIA-format sparse arrays and matrices is now faster.
scipy.sparse.linalg.spsolve_triangularis now more than an order of
magnitude faster in many cases.
scipy.spatial improvements
Rotationsupports an alternative "scalar-first" convention of quaternion
component ordering. It is available via the keyword argumentscalar_first
offrom_quatandas_quatmethods.- Some minor performance improvements for inverting of
Rotationobjects.
scipy.special improvements
- Added
scipy.special.log_wright_bessel, for calculation of the logarithm of
Wright's Bessel function. - The relative error in
scipy.special.hyp2f1calculations has improved
substantially. - Improved behavior of
boxcox,inv_boxcox,boxcox1p, and
inv_boxcox1pby preventing premature overflow.
scipy.stats improvements
- A new function
scipy.stats.powercan be used for simulating the power
of a hypothesis test with respect to a specified alternative. - The Irwin-Hall (AKA Uniform Sum) distribution has been added as
scipy.stats.irwinhall. - Exact p-value calculations of
scipy.stats.mannwhitneyuare much faster
and use less memory. scipy.stats.pearsonrnow accepts n-D arrays and computes the statistic
along a specifiedaxis.scipy.stats.kstat,scipy.stats.kstatvar, andscipy.stats.bartlett
are faster at performing calculations along an axis of a large n-D array.
Array API Standard Support
Experimental support for array libraries other than NumPy has been added to
existing sub-packages in recent versions of SciPy. Please consider testing
these features by setting an environment variable SCIPY_ARRAY_API=1 and
providing PyTorch, JAX, or CuPy arrays as array arguments.
As of 1.14.0, there is support for
-
scipy.cluster -
scipy.fft -
scipy.constants -
scipy.special: (select functions)scipy.special.log_ndtrscipy.special.ndtrscipy.special.ndtriscipy.special.erfscipy.special.erfcscipy.special.i0scipy.special.i0escipy.special.i1scipy.special.i1escipy.special.gammalnscipy.special.gammaincscipy.special.gammainccscipy.special.logitscipy.special.expitscipy.special.entrscipy.special.rel_entrscipy.special.xlogyscipy.special.chdtrc
-
scipy.stats: (select functions)scipy.stats.describescipy.stats.momentscipy.stats.skewscipy.stats.kurtosisscipy.stats.kstatscipy.stats.kstatvarscipy.stats.circmeanscipy.stats.circvarscipy.stats.circstdscipy.stats.entropyscipy.stats.variationscipy.stats.semscipy.stats.ttest_1sampscipy.stats.pearsonrscipy.stats.chisquarescipy.stats.skewtestscipy.stats.kurtosistestscipy.stats.normaltestscipy.stats.jarque_berascipy.stats.bartlettscipy.stats.power_divergencescipy.stats.monte_carlo_test
Deprecated features
scipy.stats.gstd,scipy.stats.chisquare, and
scipy.stats.power_divergencehave deprecated support for masked array
input.scipy.stats.linregresshas deprecated support for specifying both samples
in one argument;xandyare to be provided as separate arguments.- The
conjtranspmethod forscipy.sparse.dok_arrayand
scipy.sparse.dok_matrixhas been deprecated and will be removed in SciPy
1.16.0. - The option
quadrature="trapz"inscipy.integrate.quad_vechas been
deprecated in favour ofquadrature="trapezoid"and will be removed in
SciPy 1.16.0. scipy.special.{comb,perm}have deprecated support for use ofexact=Truein
conjunction with non-integralNand/ork.
Backwards incompatible changes
- Many
scipy.statsfunctions now produce a standardized warning message when
an input sample is too small (e.g. zero size). Previously, these functions
may have raised an error, emitted one or more less informative warnings, or
emitted no warnings. In most cases, returned results are unchanged; in almost
all cases the correct result isNaN.
Expired deprecations
There is an ongoing effort to follow through on long-standing deprecations.
The following previously deprecated features are affected:
-
Several previously deprecated methods for sparse arrays were removed:
asfptype,getrow,getcol,get_shape,getmaxprint,
set_shape,getnnz, andgetformat. Additionally, the.Aand
.Hattributes were removed. -
scipy.integrate.{simps,trapz,cumtrapz}have been removed in favour of
simpson,trapezoid, andcumulative_trapezoid. -
The
tolargument ofscipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr}has been removed in favour ofrtol.
Furthermore, the default value ofatolfor these functions has changed
to0.0. -
The
restrtargument ofscipy.sparse.linalg.gmreshas been removed in
favour ofrestart. -
The
initial_lexsortargument ofscipy.stats.kendalltauhas been
removed. -
The
condandrcondarguments ofscipy.linalg.pinvhave been
removed. -
The
evenargument ofscipy.integrate.simpsonhas been removed. -
The
turboandeigvalsarguments fromscipy.linalg.{eigh,eigvalsh}
have been removed. -
The
legacyargument ofscipy.special.combhas been removed. -
The
hz/nyqargument ofsignal.{firls, firwin, firwin2, remez}has
been removed. -
Objects that weren't part of the public interface but were accessible through
deprecated submodules have been removed. -
float128,float96, and object arrays now raise an error in
scipy.signal.medfiltandscipy.signal.order_filter. -
scipy.interpolate.interp2dhas been replaced by an empty stub (to be
removed completely in the future). -
Coinciding with changes to function signatures (e.g. removal of a deprecated
keyword), we had deprecated positional use of keyword arguments for the
affected functions, which will now raise an error. Affected functions are:sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}stats.kendalltaulinalg.pinvintegrate.simpsonlinalg.{eigh,eigvalsh}special.combsignal.{firls, firwin, firwin2, remez}
Other changes
- SciPy now uses C17 as the C standard to build with, instead of C99. The C++
standard remains C++17. - macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported.
This results in significant performance improvements for linear algebra
operations, as well as smaller binary wheels. - Cross-compilation should be smoother and QEMU or similar is no longer needed
to run the cross interpreter. - Experimental array API support for the JAX backend has been added to several
parts of SciPy.
Authors
- Name (commits)
- h-vetinari (34)
- Steven Adams (1) +
- Max Aehle (1) +
- Ataf Fazledin Ahamed (2) +
- Luiz Eduardo Amaral (1) +
- Trinh Quoc Anh (1) +
- Miguel A. Batalla (7) +
- Tim Beyer (1) +
- Andrea Blengino (1) +
- boatwrong (1)
- Jake Bowhay (51)
- Dietrich Brunn (2)
- Evgeni Burovski (177)
- Tim Butters (7) +
- CJ Carey (5)
- Sean Cheah (46)
- Lucas Colley (73)
- Giuseppe "Peppe" Dilillo (1) +
- DWesl (2)
- Pieter Eendebak (5)
- Kenji S Emerson (1) +
- Jonas Eschle (1)
- fancidev (2)
- Anthony Frazier (1) +
- Ilan Gold (1) +
- Ralf Gommers (125)
- Rohit Goswami (28)
- Ben Greiner (1) +
- Lorenzo Gualniera (1) +
- Matt Haberland (260)
- Shawn Hsu (1) +
- Budjen Jovan (3) +
- Jozsef Kutas (1)
- Eric Larson (3)
- Gregory R. Lee (4)
- Philip Loche (1) +
- Christian Lorentzen (5)
- Sijo Valayakkad Manikandan (2) +
- marinelay (2) +
- Nikolay Mayorov (1)
- Nicholas McKibben (2)
- Melissa Weber Mendonça (7)
- João Mendes (1) +
- Samuel Le Meur-Diebolt (1) +
- Tomiță Militaru (2) +
- Andrew Nelson (35)
- Lysandros Nikolaou (1)
- Nick ODell (5) +
- Jacob Ogle (1) +
- Pearu Peterson (1)
- Matti Picus (5)
- Ilhan Polat (9)
- pwcnorthrop (3) +
- Bharat Raghunathan (1)
- Tom M. Ragonneau (2) +
- Tyler Reddy (101)
- Pamphile Roy (18)
- Atsushi Sakai (9)
- Daniel Schmitz (5)
- Julien Schueller (2) +
- Dan Schult (13)
- Tomer Sery (7)
- Scott Shambaugh (4)
- Tuhin Sharma (1) +
- Sheila-nk (4)
- Skylake (1) +
- Albert Steppi (215)
- Kai Striega (6)
- Zhibing Sun (2) +
- Nimish Telang (1) +
- toofooboo (1) +
- tpl2go (1) +
- Edgar Andrés Margffoy Tuay (44)
- Andrew Valentine (1)
- Valerix (1) +
- Christian Veenhuis (1)
- void (2) +
- Warren Weckesser (3)
- Xuefeng Xu (1)
- Rory Yorke (1)
- Xiao Yuan (1)
- Irwin Zaid (35)
- Elmar Zander (1) +
- Zaikun ZHANG (1)
- ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (4) +
A total of 85 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.