Releases: scipy/scipy
SciPy 1.17.0rc1
SciPy 1.17.0 Release Notes
Note: SciPy 1.17.0 is not released yet!
SciPy 1.17.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.17.x branch, and on adding new features on the main branch.
This release requires Python 3.11-3.14 and NumPy 1.26.4 or greater.
Highlights of this release
- Many SciPy functions have gained native support for batching of N-dimensional
array input and additional support for the array API standard. An overall
summary of the latter is now available in a set of tables. - In
scipy.sparse,coo_arraynow has full support for indexing across
dimensions without needing to convert between sparse formats. ARPACK
and PROPACK rewrites from Fortran77 to C now empower the use of external
pseudorandom number generators. - In
scipy.spatial,transform.Rotationandtransform.RigidTransform
have been extended to support N-D arrays.geometric_slerpnow has support
for extrapolation. scipy.statshas gained the matrix t and logistic distributions and many
performance and accuracy improvements.- Initial support for 64-bit integer (ILP64) BLAS and LAPACK libraries has
been added, including for MKL, Apple Accelerate and OpenBLAS. Please
report any issues with ILP64 you encounter.
New features
scipy.integrate improvements
- The integration routines
dopri5,dopri853,LSODA,vode, and
zvodehave been ported from Fortran77 to C. scipy.integrate.quadnow has a fast path for returning 0 when the integration
interval is empty.
scipy.cluster improvements
scipy.cluster.hierarchy.is_isomorphichas improved performance and array
API support.
scipy.interpolate improvements
- A new
bc_typeargument has been added toscipy.interpolate.make_splrep
andscipy.interpolate.make_splprepto control the boundary conditions for
spline fitting. Allowed values are"not-a-knot"(default) and
"periodic". - A new
derivativemethod has been added to the
scipy.interpolate.NdBSplineclass, to construct a new spline representing a
partial derivative of the given spline. This method is similar to the
BSpline.derivativemethod of 1-D spline objects. - Performance of
"cubic"and"quintic"modes of
scipy.interpolate.RegularGridInterpolatorhas been improved. - Numerical stability of
scipy.interpolate.AAAhas been improved. scipy.interpolate.FloaterHormannInterpolatoradded support for
multidimensional, batched inputs and gained a newaxisparameter to
select the interpolation axis.
scipy.linalg improvements
-
scipy.linalg.invroutine has been improved:- it now attempts to detect the structure of its argument and selects an
appropriate low-level matrix inversion routine. A newassume_akeyword
allows to bypass the structure detection if the structure is known. For
batched inputs, the detection is run for each 2D slice, unless an explicit
value forassume_ais provided (in which case, the structure is
assumed to be the same for all 2-D slices of the batch); - the new
lower={True,False}keyword argument has been added to help
select the upper or lower triangle of the input matrix for symmetric
inputs; refer to the docstring ofscipy.linalg.invfor details; - the routine emits a
LinAlgWarningif it detects an ill-conditioned
input; - performance for batched inputs has been improved.
- it now attempts to detect the structure of its argument and selects an
-
scipy.linalg.fiedlerhas gained native support for batched inputs. -
performance has improved for
scipy.linalg.solvewith batched inputs
for certain matrix structures.
scipy.optimize improvements
optimize.minimize(method="trust-exact")now accepts a
solver-specific"subproblem_maxiter"option. This option can be used to
assure that the algorithm converges for functions with an ill-conditioned
Hessian.- Callback functions used by
optimize.minimize(method="slsqp")can
opt into the new callback interface by accepting a single keyword argument
intermediate_result.
scipy.signal improvements
scipy.signal.abcd_normalizegained more informative error messages and the
documentation was improved.scipy.signal.get_windownow accepts the suffixes'_periodic'and
'_symmetric'to distinguish between periodic and symmetric windows
(overriding thefftbinparameter). This benefits the functions
coherence,csd,periodogram,welch,spectrogram,
stft,istft,resample,resample_poly,firwin,
firwin2,firwin_2d,check_COLAandcheck_NOLA, which utilize
get_windowbut do not expose thefftbinparameter.scipy.signal.hilbert2gained the new keywordaxesfor specifying the
axes along which the two-dimensional analytic signal should be calculated.
Furthermore, the documentation ofscipy.signal.hilbertand
scipy.signal.hilbert2was significantly improved.
scipy.sparse improvements
coo_arraynow supports indexing. This includes slices, arrays,
np.newaxis,Ellipsis, in 1D, 2D and the new nD. So COO format now
has full support for nD and COO now allows indexing without converting
formats.- Additional sparse construction functions include
expand_dims,
swapaxes,permute_dims, and nD support for thekronfunction. - ARPACK Fortran77 library is ported to C. Among many changes, it is now
possible to use external random generators including NumPy PRNGs for
reproducible runs. Previously this was not the case due to internal seeding
behavior of the original ARPACK code. - Similarly, PROPACK Fortran77 library is also ported to C with the same PRNG
enhancements and other improvements. scipy.sparse.dok_arraynow supports anupdatemethod which can be
used to update the sparse array using a dict,dict.items()-like iterable,
or anotherdok_arraymatrix. It performs additional validation that keys
are valid index tuples.scipy.sparse.dia_array.tocsris approximately three times faster and
some unneccesary copy operations have been removed from sparse format
interconversions more broadly.- Added
scipy.sparse.linalg.funm_multiply_krylov, a restarted Krylov method
for evaluatingy = f(tA) b.
scipy.spatial improvements
-
The
spatial.transformmodule has gained an array API standard compatible
backend. -
transform.Rotationandtransform.RigidTransformhave been extended
from 0D single values and 1D arrays to N-D arrays, with standard indexing and
broadcasting rules. Both now have the following additions:- A
shapeproperty. - A
shapeargument to theiridentity()constructors, which should be
preferred over the existingnumargument. This has also been added as an
argument forRotation.random()(RigidTransformdoes not currently
have arandomconstructor). - An
axisargument to theirmean()functions.
- A
-
The resulting shapes for
transform.Rotation.from_euler/
from_davenporthave changed to make them consistent with broadcasting
rules. Angle inputs to Euler angles must now strictly match the number of
provided axes in the last dimension. The resultingRotationhas the shape
np.atleast_1d(angles).shape[:-1]. Angle inputs to Davenport angles must
also match the number of axes in the last dimension. The resultingRotation
has the shapenp.broadcast_shapes(np.atleast_2d(axes).shape[:-2], np.atleast_1d(angles).shape[:-1]). -
Rotation.from_matrixhas gained anassume_validargument that allows for
performance improvements when users can guarantee valid matrix inputs.
from_matrixis now also faster in cases where a known orthogonal matrix
is used. -
The
scipy.spatial.geometric_slerpfunction can now extrapolate. When given a
value outside the range [0, 1],geometric_slerp()will continue with
the same rotation outside this range. For example, if spherically
interpolating withstartbeing a point on the equator, andend
being a point at the north pole, then a value oft=-1would give you a
point at the south pole. -
Rotation.as_eulerandRotation.as_davenportmethods have gained a
suppress_warningsparameter to enable suppression of gimbal lock warnings.
scipy.special improvements
- The following functions for statistical applications have significantly
improved parameter ranges and reduced error rates:btdtria,btdtrib,
chdtriv,chndtr,chndtrix,chndtridf,chndtrinc,fdtr,
fdtrc,fdtri,gdtria,gdtrix,pdtrik,stdtrand
stdtrit. - The incomplete beta functions
betainc,betaincc,betaincinvand
betainccinvare improved for...
SciPy 1.16.3
SciPy 1.16.3 Release Notes
SciPy 1.16.3 is a bug-fix release with no new features compared to 1.16.2.
Authors
- Name (commits)
- ChrisAB (1) +
- Lucas Colley (1)
- Ralf Gommers (3)
- Matt Haberland (8)
- Nick ODell (2)
- Ilhan Polat (1)
- Tyler Reddy (28)
- Lucas Roberts (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.
The full issue and pull request lists, and the release asset hashes are available
in the associated README.txt file.
SciPy 1.16.2
SciPy 1.16.2 Release Notes
SciPy 1.16.2 is a bug-fix release with no new features
compared to 1.16.1. This is the first stable release of
SciPy to provide Windows on ARM wheels on PyPI.
Authors
- Name (commits)
- Dietrich Brunn (1)
- Ralf Gommers (6)
- Adam Jones (1)
- Gleb Khmyznikov (1) +
- Jost Migenda (1) +
- newyork_loki (1)
- Nick ODell (3)
- Dimitri Papadopoulos Orfanos (1)
- Ilhan Polat (2)
- Tyler Reddy (26)
- Mugunthan Selvanayagam (1) +
- Shuhei Watanabe (1) +
A total of 12 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.
The full issue and pull request lists, and the release asset hashes are available
in the associated README.txt file.
SciPy 1.16.1
SciPy 1.16.1 Release Notes
SciPy 1.16.1 is a bug-fix release that adds support for Python 3.14.0rc1,
including PyPI wheels.
Authors
- Name (commits)
- Evgeni Burovski (1)
- Rob Falck (1)
- Ralf Gommers (7)
- Geoffrey Gunter (1) +
- Matt Haberland (2)
- Joren Hammudoglu (1)
- Andrew Nelson (2)
- newyork_loki (1) +
- Ilhan Polat (1)
- Tyler Reddy (25)
- Daniel Schmitz (1)
- Dan Schult (2)
A total of 12 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.
The full issue and pull request lists, and the release asset hashes are available
in the associated README.txt file.
SciPy 1.16.0
SciPy 1.16.0 Release Notes
SciPy 1.16.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.16.x branch, and on adding new features on the main branch.
This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.
Highlights of this release
- Improved experimental support for the Python array API standard, including
new support inscipy.signal, and additional support inscipy.statsand
scipy.special. Improved support for JAX and Dask backends has been added,
with notable support inscipy.cluster.hierarchy, many functions in
scipy.special, and many of the trimmed statistics functions. scipy.optimizenow uses the new Python implementation from the
PRIMApackage for COBYLA. The PRIMA implementation fixes many bugs
in the old Fortran 77 implementation with a better performance on average.scipy.sparse.coo_arraynow supports n-D arrays with reshaping, arithmetic and
reduction operations like sum/mean/min/max. No n-D indexing or
scipy.sparse.random_arraysupport yet.- Updated guide and tools for migration from sparse matrices to sparse arrays.
- Nearly all functions in the
scipy.linalgnamespace that accept array
arguments now support N-dimensional arrays to be processed as a batch. - Two new
scipy.signalfunctions,scipy.signal.firwin_2dand
scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and
scipy.signal.ShortTimeFFTdual window calculation, respectively. - A new class,
scipy.spatial.transform.RigidTransform, provides functionality
to convert between different representations of rigid transforms in 3-D
space. - A new function
scipy.ndimage.vectorized_filterfor generic filters that
take advantage of a vectorized Python callable was added.
New features
scipy.io improvements
scipy.io.savematnow provides informative warnings for invalid field names.scipy.io.mmreadnow provides a clearer error message when provided with
a source file path that does not exist.scipy.io.wavfile.readcan now read non-seekable files.
scipy.integrate improvements
- The error estimate of
scipy.integrate.tanhsinhwas improved.
scipy.interpolate improvements
- Batch support was added to
scipy.interpolate.make_smoothing_spline.
scipy.linalg improvements
- Nearly all functions in the
scipy.linalgnamespace that accept array
arguments now support N-dimensional arrays to be processed as a batch.
Seelinalg_batchfor details. scipy.linalg.sqrtmis rewritten in C and its performance is improved. It
also tries harder to return real-valued results for real-valued inputs if
possible. See the function docstring for more details. In this version the
input argumentdispand the optional output argumenterrestare
deprecated and will be removed four versions later. Similarly, after
changing the underlying algorithm to recursion, theblocksizekeyword
argument has no effect and will be removed two versions later.- Wrappers for
?stevd,?langb,?sytri,?hetriand
?gbconwere added toscipy.linalg.lapack. - The default driver of
scipy.linalg.eigh_tridiagonalwas improved. scipy.linalg.solvecan now estimate the reciprocal condition number and
the matrix norm calculation is more efficient.
scipy.ndimage improvements
- A new function
scipy.ndimage.vectorized_filterfor generic filters that
take advantage of a vectorized Python callable was added. scipy.ndimage.rotatehas improved performance, especially on ARM platforms.
scipy.optimize improvements
- COBYLA was updated to use the new Python implementation from the
PRIMApackage.
The PRIMA implementation fixes many bugs
in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average
but it depends on the problem and for some
problems it can result in more function evaluations or a less optimal
result. For those cases the user can try modifying the initial and final
trust region radii given byrhobegandtolrespectively. A larger
rhobegcan help the algorithm take bigger steps initially, while a
smallertolcan help it continue and find a better solution.
For more information, see the PRIMA documentation. - Several of the
scipy.optimize.minimizemethods, and the
scipy.optimize.least_squaresfunction, have been given aworkers
keyword. This allows parallelization of some calculations via a map-like
callable, such asmultiprocessing.Pool. These parallelization
opportunities typically occur during numerical differentiation. This can
greatly speed up minimization when the objective function is expensive to
calculate. - The
lmmethod ofscipy.optimize.least_squarescan now accept
3-pointandcsfor thejackeyword. - The SLSQP Fortran 77 code was ported to C. When this method is used now the
constraint multipliers are exposed to the user through themultiplier
keyword of the returnedscipy.optimize.OptimizeResultobject. - NNLS code has been corrected and rewritten in C to address the performance
regression introduced in 1.15.x scipy.optimize.rootnow warns for invalid inner parameters when using the
newton_krylovmethod- The return value of minimization with
method='L-BFGS-B'now has
a fasterhess_inv.todense()implementation. Time complexity has improved
from cubic to quadratic. scipy.optimize.least_squareshas a newcallbackargument that is applicable
to thetrfanddogboxmethods.callbackmay be used to track
optimization results at each step or to provide custom conditions for
stopping.
scipy.signal improvements
- A new function
scipy.signal.firwin_2dfor the creation of a 2-D FIR Filter
using the 1-D window method was added. scipy.signal.cspline1d_evalandscipy.signal.qspline1d_evalnow provide
an informative error on empty input rather than hitting the recursion limit.- A new function
scipy.signal.closest_STFT_dual_windowto calculate the
scipy.signal.ShortTimeFFTdual window of a given window closest to a
desired dual window. - A new classmethod
scipy.signal.ShortTimeFFT.from_win_equals_dualto
create ascipy.signal.ShortTimeFFTinstance where the window and its dual
are equal up to a scaling factor. It allows to create short-time Fourier
transforms which are unitary mappings. - The performance of
scipy.signal.convolve2dwas improved.
scipy.sparse improvements
scipy.sparse.coo_arraynow supports n-D arrays using binary and reduction
operations.- Faster operations between two DIA arrays/matrices for: add, sub, multiply,
matmul. scipy.sparse.csgraph.dijkstrashortest_path is more efficient.scipy.sparse.csgraph.yenhas performance improvements.- Support for lazy loading of
sparse.csgraphandsparse.linalgwas
added.
scipy.spatial improvements
- A new class,
scipy.spatial.transform.RigidTransform, provides functionality
to convert between different representations of rigid transforms in 3-D
space, its application to vectors and transform composition.
It follows the same design approach asscipy.spatial.transform.Rotation. scipy.spatial.transform.Rotationnow has an appropriate__repr__method,
and improved performance for itsscipy.spatial.transform.Rotation.apply
method.
scipy.stats improvements
- A new function
scipy.stats.quantile, an array API compatible function for
quantile estimation, was added. scipy.stats.make_distributionwas extended to work with existing discrete
distributions and to facilitate the creation of custom distributions in the
new random variable infrastructure.- A new distribution,
scipy.stats.Binomial, was added. - An
equal_varkeyword was added toscipy.stats.tukey_hsd(enables the
Games-Howell test) andscipy.stats.f_oneway(enables Welch ANOVA). - The moment calculation for
scipy.stats.gennormwas improved. - The
scipy.stats.modeimplementation was vectorized, for faster batch
calculation. - Support for
axis,nan_policy, andkeepdimskeywords was added to
scipy.stats.power_divergence,scipy.stats.chisquare,
scipy.stats.pointbiserialr,scipy.stats.kendalltau,
scipy.stats.weightedtau,scipy.stats.theilslopes,
scipy.stats.siegelslopes,scipy.stats.boxcox_llf, and
scipy.stats.linregress. - Support for
keepdimsandnan_policykeywords was added to
`scipy....
SciPy 1.16.0rc2
SciPy 1.16.0 Release Notes
Note: SciPy 1.16.0 is not released yet!
SciPy 1.16.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.16.x branch, and on adding new features on the main branch.
This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.
Highlights of this release
- Improved experimental support for the Python array API standard, including
new support inscipy.signal, and additional support inscipy.statsand
scipy.special. Improved support for JAX and Dask backends has been added,
with notable support inscipy.cluster.hierarchy, many functions in
scipy.special, and many of the trimmed statistics functions. scipy.optimizenow uses the new Python implementation from thePRIMApackage for COBYLA.
The PRIMA implementation fixes many bugs in the old Fortran 77 implementation with
a better performance on average.scipy.sparse.coo_arraynow supports n-D arrays with reshaping, arithmetic and
reduction operations like sum/mean/min/max. No n-D indexing or
scipy.sparse.random_arraysupport yet.- Updated guide and tools for migration from sparse matrices to sparse arrays.
- Nearly all functions in the
scipy.linalgnamespace that accept array
arguments now support N-dimensional arrays to be processed as a batch. - Two new
scipy.signalfunctions,scipy.signal.firwin_2dand
scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and
scipy.signal.ShortTimeFFTdual window calculation, respectively. - A new class,
scipy.spatial.transform.RigidTransform, provides functionality
to convert between different representations of rigid transforms in 3-D
space.
New features
scipy.io improvements
scipy.io.savematnow provides informative warnings for invalid field names.scipy.io.mmreadnow provides a clearer error message when provided with
a source file path that does not exist.scipy.io.wavfile.readcan now read non-seekable files.
scipy.integrate improvements
- The error estimate of
scipy.integrate.tanhsinhwas improved.
scipy.interpolate improvements
- Batch support was added to
scipy.interpolate.make_smoothing_spline.
scipy.linalg improvements
- Nearly all functions in the
scipy.linalgnamespace that accept array
arguments now support N-dimensional arrays to be processed as a batch.
See :ref:linalg_batchfor details. scipy.linalg.sqrtmis rewritten in C and its performance is improved. It
also tries harder to return real-valued results for real-valued inputs if
possible. See the function docstring for more details. In this version the
input argumentdispand the optional output argumenterrestare
deprecated and will be removed four versions later. Similarly, after
changing the underlying algorithm to recursion, theblocksizekeyword
argument has no effect and will be removed two versions later.- Wrappers for
?stevd,?langb,?sytri,?hetriand
?gbconwere added toscipy.linalg.lapack. - The default driver of
scipy.linalg.eigh_tridiagonalwas improved. scipy.linalg.solvecan now estimate the reciprocal condition number and
the matrix norm calculation is more efficient.
scipy.ndimage improvements
- A new function
scipy.ndimage.vectorized_filterfor generic filters that
take advantage of a vectorized Python callable was added. scipy.ndimage.rotatehas improved performance, especially on ARM platforms.
scipy.optimize improvements
- COBYLA was updated to use the new Python implementation from the
PRIMApackage.
The PRIMA implementation fixes many bugs
in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average,
but it depends on the problem and for some
problems it can result in more function evaluations or a less optimal
result. For those cases the user can try modifying the initial and final
trust region radii given byrhobegandtolrespectively. A larger
rhobegcan help the algorithm take bigger steps initially, while a
smallertolcan help it continue and find a better solution.
For more information, see the PRIMA documentation. - Several of the
scipy.optimize.minimizemethods, and the
scipy.optimize.least_squaresfunction, have been given aworkers
keyword. This allows parallelization of some calculations via a map-like
callable, such asmultiprocessing.Pool. These parallelization
opportunities typically occur during numerical differentiation. This can
greatly speed up minimization when the objective function is expensive to
calculate. - The
lmmethod ofscipy.optimize.least_squarescan now accept
3-pointandcsfor thejackeyword. - The SLSQP Fortran 77 code was ported to C. When this method is used now the
constraint multipliers are exposed to the user through themultiplier
keyword of the returnedscipy.optimize.OptimizeResultobject. - NNLS code has been corrected and rewritten in C to address the performance
regression introduced in 1.15.x scipy.optimize.rootnow warns for invalid inner parameters when using the
newton_krylovmethod- The return value of minimization with
method='L-BFGS-B'now has
a fasterhess_inv.todense()implementation. Time complexity has improved
from cubic to quadratic. scipy.optimize.least_squareshas a newcallbackargument that is applicable
to thetrfanddogboxmethods.callbackmay be used to track
optimization results at each step or to provide custom conditions for
stopping.
scipy.signal improvements
- A new function
scipy.signal.firwin_2dfor the creation of a 2-D FIR Filter
using the 1-D window method was added. scipy.signal.cspline1d_evalandscipy.signal.qspline1d_evalnow provide
an informative error on empty input rather than hitting the recursion limit.- A new function
scipy.signal.closest_STFT_dual_windowto calculate the
scipy.signal.ShortTimeFFTdual window of a given window closest to a
desired dual window. - A new classmethod
scipy.signal.ShortTimeFFT.from_win_equals_dualto
create ascipy.signal.ShortTimeFFTinstance where the window and its dual
are equal up to a scaling factor. It allows to create short-time Fourier
transforms which are unitary mappings. - The performance of
scipy.signal.convolve2dwas improved.
scipy.sparse improvements
scipy.sparse.coo_arraynow supports n-D arrays using binary and reduction
operations.- Faster operations between two DIA arrays/matrices for: add, sub, multiply,
matmul. scipy.sparse.csgraph.dijkstrashortest_path is more efficient.scipy.sparse.csgraph.yenhas performance improvements.- Support for lazy loading of
sparse.csgraphandsparse.linalgwas
added.
scipy.spatial improvements
- A new class,
scipy.spatial.transform.RigidTransform, provides functionality
to convert between different representations of rigid transforms in 3-D
space, its application to vectors and transform composition.
It follows the same design approach asscipy.spatial.transform.Rotation. scipy.spatial.transform.Rotationnow has an appropriate__repr__method,
and improved performance for itsscipy.spatial.transform.Rotation.apply
method.
scipy.stats improvements
- A new function
scipy.stats.quantile, an array API compatible function for
quantile estimation, was added. scipy.stats.make_distributionwas extended to work with existing discrete
distributions and to facilitate the creation of custom distributions in the
new random variable infrastructure.- A new distribution,
scipy.stats.Binomial, was added. - An
equal_varkeyword was added toscipy.stats.tukey_hsd(enables the
Games-Howell test) andscipy.stats.f_oneway(enables Welch ANOVA). - The moment calculation for
scipy.stats.gennormwas improved. - The
scipy.stats.modeimplementation was vectorized, for faster batch
calculation. - Support for
axis,nan_policy, andkeepdimskeywords was added to
scipy.stats.power_divergence,scipy.stats.chisquare,
scipy.stats.pointbiserialr,scipy.stats.kendalltau,
scipy.stats.weightedtau,scipy.stats.theilslopes,
scipy.stats.siegelslopes,scipy.stats.boxcox_llf, and
scipy.stats.linregress. - Support for
keepdimsandnan_policykeywords was added to
scipy.stats.gstd. - The performance of
scipy.stats.special_ortho_groupandscipy.stats.pearsonr
was improved. - Support for an ``rng`...
SciPy 1.16.0rc1
SciPy 1.16.0 Release Notes
Note: SciPy 1.16.0 is not released yet!
SciPy 1.16.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.16.x branch, and on adding new features on the main branch.
This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.
Highlights of this release
- Improved experimental support for the Python array API standard, including
new support inscipy.signal, and additional support inscipy.statsand
scipy.special. Improved support for JAX and Dask backends has been added,
with notable support inscipy.cluster.hierarchy, many functions in
scipy.special, and many of the trimmed statistics functions. scipy.optimizenow uses the new Python implementation from the
PRIMApackage for COBYLA. The PRIMA implementation fixes many bugs
in the old Fortran 77 implementation with a better performance on average.scipy.sparse.coo_arraynow supports n-D arrays with reshaping, arithmetic and
reduction operations like sum/mean/min/max. No n-D indexing or
scipy.sparse.random_arraysupport yet.- Updated guide and tools for migration from sparse matrices to sparse arrays.
- All functions in the
scipy.linalgnamespace that accept array arguments
now support N-dimensional arrays to be processed as a batch. - Two new
scipy.signalfunctions,scipy.signal.firwin_2dand
scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and
scipy.signal.ShortTimeFFTdual window calculation, respectively. - A new class,
scipy.spatial.transform.RigidTransform, provides functionality
to convert between different representations of rigid transforms in 3-D
space.
New features
scipy.io improvements
scipy.io.savematnow provides informative warnings for invalid field names.scipy.io.mmreadnow provides a clearer error message when provided with
a source file path that does not exist.scipy.io.wavfile.readcan now read non-seekable files.
scipy.integrate improvements
- The error estimate of
scipy.integrate.tanhsinhwas improved.
scipy.interpolate improvements
- Batch support was added to
scipy.interpolate.make_smoothing_spline.
scipy.linalg improvements
- All functions in the
scipy.linalgnamespace that accept array arguments
now support N-dimensional arrays to be processed as a batch.
See :ref:linalg_batchfor details. scipy.linalg.sqrtmis rewritten in C and its performance is improved. It
also tries harder to return real-valued results for real-valued inputs if
possible. See the function docstring for more details. In this version the
input argumentdispand the optional output argumenterrestare
deprecated and will be removed four versions later. Similarly, after
changing the underlying algorithm to recursion, theblocksizekeyword
argument has no effect and will be removed two versions later.- Wrappers for
?stevd,?langb,?sytri,?hetriand
?gbconwere added toscipy.linalg.lapack. - The default driver of
scipy.linalg.eigh_tridiagonalwas improved. scipy.linalg.solvecan now estimate the reciprocal condition number and
the matrix norm calculation is more efficient.
scipy.ndimage improvements
- A new function
scipy.ndimage.vectorized_filterfor generic filters that
take advantage of a vectorized Python callable was added. scipy.ndimage.rotatehas improved performance, especially on ARM platforms.
scipy.optimize improvements
- COBYLA was updated to use the new Python implementation from the PRIMA package.
The PRIMA implementation fixes many bugs
in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average,
but it depends on the problem and for some
problems it can result in more function evaluations or a less optimal
result. For those cases the user can try modifying the initial and final
trust region radii given byrhobegandtolrespectively. A larger
rhobegcan help the algorithm take bigger steps initially, while a
smallertolcan help it continue and find a better solution.
For more information, see the PRIMA documentation. - Several of the
scipy.optimize.minimizemethods, and the
scipy.optimize.least_squaresfunction, have been given aworkers
keyword. This allows parallelization of some calculations via a map-like
callable, such asmultiprocessing.Pool. These parallelization
opportunities typically occur during numerical differentiation. This can
greatly speed up minimization when the objective function is expensive to
calculate. - The
lmmethod ofscipy.optimize.least_squarescan now accept
3-pointandcsfor thejackeyword. - The SLSQP Fortran 77 code was ported to C. When this method is used now the
constraint multipliers are exposed to the user through themultiplier
keyword of the returnedscipy.optimize.OptimizeResultobject. - NNLS code has been corrected and rewritten in C to address the performance
regression introduced in 1.15.x scipy.optimize.rootnow warns for invalid inner parameters when using the
newton_krylovmethod- The return value of minimization with
method='L-BFGS-B'now has
a fasterhess_inv.todense()implementation. Time complexity has improved
from cubic to quadratic. scipy.optimize.least_squareshas a newcallbackargument that is applicable
to thetrfanddogboxmethods.callbackmay be used to track
optimization results at each step or to provide custom conditions for
stopping.
scipy.signal improvements
- A new function
scipy.signal.firwin_2dfor the creation of a 2-D FIR Filter
using the 1-D window method was added. scipy.signal.cspline1d_evalandscipy.signal.qspline1d_evalnow provide
an informative error on empty input rather than hitting the recursion limit.- A new function
scipy.signal.closest_STFT_dual_windowto calculate the
~scipy.signal.ShortTimeFFTdual window of a given window closest to a
desired dual window. - A new classmethod
scipy.signal.ShortTimeFFT.from_win_equals_dualto
create a~scipy.signal.ShortTimeFFTinstance where the window and its dual
are equal up to a scaling factor. It allows to create short-time Fourier
transforms which are unitary mappings. - The performance of
scipy.signal.convolve2dwas improved.
scipy.sparse improvements
scipy.sparse.coo_arraynow supports n-D arrays using binary and reduction
operations.- Faster operations between two DIA arrays/matrices for: add, sub, multiply,
matmul. scipy.sparse.csgraph.dijkstrashortest_path is more efficient.scipy.sparse.csgraph.yenhas performance improvements.- Support for lazy loading of
sparse.csgraphandsparse.linalgwas
added.
scipy.spatial improvements
- A new class,
scipy.spatial.transform.RigidTransform, provides functionality
to convert between different representations of rigid transforms in 3-D
space, its application to vectors and transform composition.
It follows the same design approach asscipy.spatial.transform.Rotation. scipy.spatial.transform.Rotationnow has an appropriate__repr__method,
and improved performance for itsscipy.spatial.transform.Rotation.apply
method.
scipy.stats improvements
- A new function
scipy.stats.quantile, an array API compatible function for
quantile estimation, was added. scipy.stats.make_distributionwas extended to work with existing discrete
distributions and to facilitate the creation of custom distributions in the
new random variable infrastructure.- A new distribution,
scipy.stats.Binomial, was added. - An
equal_varkeyword was added toscipy.stats.tukey_hsd(enables the
Games-Howell test) andscipy.stats.f_oneway(enables Welch ANOVA). - The moment calculation for
scipy.stats.gennormwas improved. - The
scipy.stats.modeimplementation was vectorized, for faster batch
calculation. - Support for
axis,nan_policy, andkeepdimskeywords was added to
scipy.stats.power_divergence,scipy.stats.chisquare,
scipy.stats.pointbiserialr,scipy.stats.kendalltau,
scipy.stats.weightedtau,scipy.stats.theilslopes,
scipy.stats.siegelslopes, andscipy.stats.boxcox_llf. - The performance of
scipy.stats.special_ortho_groupandscipy.stats.pearsonr
was improved.
Array API Standard Support
Experimental support for array libraries other than NumPy has been added to
multiple submodules in recent ...
SciPy 1.15.3
SciPy 1.15.3 Release Notes
SciPy 1.15.3 is a bug-fix release with no new features
compared to 1.15.2.
For the complete issue and PR lists see the raw release notes.
Authors
- Name (commits)
- aiudirog (1) +
- Nickolai Belakovski (1)
- Florian Bourgey (1) +
- Richard Strong Bowen (2) +
- Jake Bowhay (1)
- Dietrich Brunn (2)
- Evgeni Burovski (1)
- Lucas Colley (1)
- Ralf Gommers (1)
- Saarthak Gupta (1) +
- Matt Haberland (4)
- Chengyu Han (1) +
- Lukas Huber (1) +
- Nick ODell (2)
- Ilhan Polat (4)
- Tyler Reddy (52)
- Neil Schemenauer (1) +
- Dan Schult (1)
- sildater (1) +
- Gagandeep Singh (4)
- Albert Steppi (2)
- Matthias Urlichs (1) +
- David Varela (1) +
- ΰ¨ΰ¨ΰ¨¨ΰ¨¦ΰ©ΰ¨ͺ ΰ¨Έΰ¨Ώΰ©°ΰ¨ (Gagandeep Singh) (3)
A total of 24 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.15.2
SciPy 1.15.2 Release Notes
SciPy 1.15.2 is a bug-fix release with no new features
compared to 1.15.1. Free-threaded Python 3.13 wheels
for Linux ARM platform are available on PyPI starting with
this release.
Authors
- Name (commits)
- Peter Bell (1)
- Charles Bousseau (1) +
- Jake Bowhay (3)
- Matthew Brett (1)
- Ralf Gommers (3)
- Rohit Goswami (1)
- Matt Haberland (4)
- Parth Nobel (1) +
- Tyler Reddy (33)
- Daniel Schmitz (2)
- Dan Schult (5)
- Scott Shambaugh (2)
- Edgar AndrΓ©s Margffoy Tuay (1)
- Warren Weckesser (4)
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.15.1
SciPy 1.15.1 Release Notes
SciPy 1.15.1 is a bug-fix release with no new features
compared to 1.15.0. Importantly, an issue with the
import of scipy.optimize breaking other packages
has been fixed.
Authors
- Name (commits)
- Ralf Gommers (3)
- Rohit Goswami (1)
- Matt Haberland (2)
- Tyler Reddy (7)
- Daniel Schmitz (1)
A total of 5 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.