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_triangular
is 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
wavfile
now supports reading and writing ofwav
files 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.Akima1DInterpolator
now supports extrapolation via the
extrapolate
argument.
scipy.optimize
improvements
scipy.optimize.HessianUpdateStrategy
now 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_fprime
now has linear space complexity.
scipy.signal
improvements
scipy.signal.minimum_phase
has 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.ndarray
for argmin. - Sparse matrix and array objects improve their
repr
andstr
output. - A special case has been added to handle multiplying a
dia_array
by a
scalar, which avoids a potentially costly conversion to CSR format. scipy.sparse.csgraph.yen
has been added, allowing usage of Yen's K-Shortest
Paths algorithm on a directed on undirected graph.- Addition between DIA-format sparse arrays and matrices is now faster.
scipy.sparse.linalg.spsolve_triangular
is now more than an order of
magnitude faster in many cases.
scipy.spatial
improvements
Rotation
supports an alternative "scalar-first" convention of quaternion
component ordering. It is available via the keyword argumentscalar_first
offrom_quat
andas_quat
methods.- Some minor performance improvements for inverting of
Rotation
objects.
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.hyp2f1
calculations has improved
substantially. - Improved behavior of
boxcox
,inv_boxcox
,boxcox1p
, and
inv_boxcox1p
by preventing premature overflow.
scipy.stats
improvements
- A new function
scipy.stats.power
can 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.mannwhitneyu
are much faster
and use less memory. scipy.stats.pearsonr
now 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_ndtr
scipy.special.ndtr
scipy.special.ndtri
scipy.special.erf
scipy.special.erfc
scipy.special.i0
scipy.special.i0e
scipy.special.i1
scipy.special.i1e
scipy.special.gammaln
scipy.special.gammainc
scipy.special.gammaincc
scipy.special.logit
scipy.special.expit
scipy.special.entr
scipy.special.rel_entr
scipy.special.xlogy
scipy.special.chdtrc
-
scipy.stats
: (select functions)scipy.stats.describe
scipy.stats.moment
scipy.stats.skew
scipy.stats.kurtosis
scipy.stats.kstat
scipy.stats.kstatvar
scipy.stats.circmean
scipy.stats.circvar
scipy.stats.circstd
scipy.stats.entropy
scipy.stats.variation
scipy.stats.sem
scipy.stats.ttest_1samp
scipy.stats.pearsonr
scipy.stats.chisquare
scipy.stats.skewtest
scipy.stats.kurtosistest
scipy.stats.normaltest
scipy.stats.jarque_bera
scipy.stats.bartlett
scipy.stats.power_divergence
scipy.stats.monte_carlo_test
Deprecated features
scipy.stats.gstd
,scipy.stats.chisquare
, and
scipy.stats.power_divergence
have deprecated support for masked array
input.scipy.stats.linregress
has deprecated support for specifying both samples
in one argument;x
andy
are to be provided as separate arguments.- The
conjtransp
method forscipy.sparse.dok_array
and
scipy.sparse.dok_matrix
has been deprecated and will be removed in SciPy
1.16.0. - The option
quadrature="trapz"
inscipy.integrate.quad_vec
has 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=True
in
conjunction with non-integralN
and/ork
.
Backwards incompatible changes
- Many
scipy.stats
functions now produce a standardized warning message when
an input sample is too small (e.g. zero size). Previously, these functions
may have raised an error, emitted one or more less informative warnings, or
emitted no warnings. In most cases, returned results are unchanged; in almost
all cases the correct result 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.A
and
.H
attributes were removed. -
scipy.integrate.{simps,trapz,cumtrapz}
have been removed in favour of
simpson
,trapezoid
, andcumulative_trapezoid
. -
The
tol
argument ofscipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr}
has been removed in favour ofrtol
.
Furthermore, the default value ofatol
for these functions has changed
to0.0
. -
The
restrt
argument ofscipy.sparse.linalg.gmres
has been removed in
favour ofrestart
. -
The
initial_lexsort
argument ofscipy.stats.kendalltau
has been
removed. -
The
cond
andrcond
arguments ofscipy.linalg.pinv
have been
removed. -
The
even
argument ofscipy.integrate.simpson
has been removed. -
The
turbo
andeigvals
arguments fromscipy.linalg.{eigh,eigvalsh}
have been removed. -
The
legacy
argument ofscipy.special.comb
has been removed. -
The
hz
/nyq
argument 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.medfilt
andscipy.signal.order_filter
. -
scipy.interpolate.interp2d
has been replaced by an empty stub (to be
removed completely in the future). -
Coinciding with changes to function signatures (e.g. removal of a deprecated
keyword), we had deprecated positional use of keyword arguments for the
affected functions, which will now raise an error. Affected functions are:sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
stats.kendalltau
linalg.pinv
integrate.simpson
linalg.{eigh,eigvalsh}
special.comb
signal.{firls, firwin, firwin2, remez}
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.