Update dependency scipy to v1.17.0 #91
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==1.16.3→==1.17.0Release Notes
scipy/scipy (scipy)
v1.17.0: SciPy 1.17.0Compare Source
SciPy 1.17.0 Release Notes
SciPy
1.17.0is the culmination of 6 months of hard work. It containsmany 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 -Wdand check forDeprecationWarnings).Our development attention will now shift to bug-fix releases on the
1.17.xbranch, and on adding new features on the main branch.This release requires Python
3.11-3.14and NumPy1.26.4or greater.Highlights of this release
array input and additional support for the array API standard. An overall
summary of the latter is now available in a set of tables.
scipy.sparse,coo_arraynow supports indexing. This includes integers,slices, arrays,
np.newaxis,Ellipsis, in 1D, 2D and the relativelynew nD. In
scipy.sparse.linalg, ARPACK and PROPACK rewrites from Fortran77to C now empower the use of external pseudorandom number generators, e.g.
from numpy.
scipy.spatial,transform.Rotationandtransform.RigidTransformhave been extended to support N-D arrays.
geometric_slerpnow has supportfor extrapolation.
scipy.statshas gained the matrix t and logistic distributions and manyperformance and accuracy improvements.
been added, including for MKL and Apple Accelerate. Please report any issues with
ILP64 you encounter.
New features
scipy.integrateimprovementsdopri5,dopri853,LSODA,vode, andzvodehave been ported from Fortran77 to C.scipy.integrate.quadnow has a fast path for returning 0 when the integrationinterval is empty.
BDF,DOP853,RK23,RK45,OdeSolver,DenseOutput,ode, andcomplex_odeclasses now support subscription, making themgeneric types, for compatibility with
scipy-stubs.scipy.clusterimprovementsscipy.cluster.hierarchy.is_isomorphichas improved performance and arrayAPI support.
scipy.interpolateimprovementsbc_typeargument has been added toscipy.interpolate.make_splrep,scipy.interpolate.make_splprep, andscipy.interpolate.generate_knotstocontrol the boundary conditions for spline fitting. Allowed values are
"not-a-knot"(default) and"periodic".derivativemethod has been added to thescipy.interpolate.NdBSplineclass, to construct a new spline representing apartial derivative of the given spline. This method is similar to the
BSpline.derivativemethod of 1-D spline objects. In addition, theNdBSplinemutable instance attribute.cwas changed into a read-only@property."cubic"and"quintic"modes ofscipy.interpolate.RegularGridInterpolatorhas been improved. Furthermore,the (mutable) instance attributes
.gridand.valueswere changed into(read-only) properties.
scipy.interpolate.AAAhas been improved and it hasgained a new
axisparameter.scipy.interpolate.FloaterHormannInterpolatoradded support formultidimensional, batched inputs and gained a new
axisparameter toselect the interpolation axis.
RBFInterpolatorhas gained an array API standard compatible backend, with animproved support for GPU arrays.
AAA,*Interpolator,*Poly, and*Splineclasses nowsupport subscription, making them generic types, for compatibility with
scipy-stubs.scipy.linalgimprovementsscipy.linalg.invroutine has been improved:appropriate low-level matrix inversion routine. A new
assume_akeywordallows 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 for
assume_ais provided (in which case, the structure isassumed to be the same for all 2-D slices of the batch);
lower={True,False}keyword argument has been added to helpselect the upper or lower triangle of the input matrix for symmetric
inputs; refer to the docstring of
scipy.linalg.invfor details;LinAlgWarningif it detects an ill-conditionedinput;
scipy.linalg.fiedlerhas gained native support for batched inputs.performance has improved for
scipy.linalg.solvewith batched inputsfor certain matrix structures.
scipy.optimizeimprovementsoptimize.minimize(method="trust-exact")now accepts asolver-specific
"subproblem_maxiter"option. This option can be used toassure that the algorithm converges for functions with an ill-conditioned
Hessian.
optimize.minimize(method="slsqp")canopt into the new callback interface by accepting a single keyword argument
intermediate_result.BroydenFirst,*Jacobian, andBoundsclasses now supportsubscription, making them generic types, for compatibility with
scipy-stubs.scipy.signalimprovementsscipy.signal.abcd_normalizegained more informative error messages and thedocumentation was improved.
scipy.signal.get_windownow accepts the suffixes'_periodic'and'_symmetric'to distinguish between periodic and symmetric windows(overriding the
fftbinparameter). This benefits the functionscoherence,csd,periodogram,welch,spectrogram,stft,istft,resample,resample_poly,firwin,firwin2,firwin_2d,check_COLAandcheck_NOLA, which utilizeget_windowbut do not expose thefftbinparameter.scipy.signal.hilbert2gained the new keywordaxesfor specifying theaxes along which the two-dimensional analytic signal should be calculated.
Furthermore, the documentation of
scipy.signal.hilbertandscipy.signal.hilbert2was significantly improved.ShortTimeFFTandLinearTimeInvariantclasses now supportsubscription, making them generic types, for compatibility with
scipy-stubs.scipy.sparseimprovementscoo_arraynow supports indexing. This includes slices, arrays,np.newaxis,Ellipsis, in 1D, 2D and the new nD. So COO format nowhas full support for nD and COO now allows indexing without converting
formats.
expand_dims,swapaxes,permute_dims, and nD support for thekronfunction.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.
enhancements and other improvements.
scipy.sparse.dok_arraynow supports anupdatemethod which can beused to update the sparse array using a dict,
dict.items()-like iterable,or another
dok_arraymatrix. It performs additional validation that keysare valid index tuples.
scipy.sparse.dia_array.tocsris approximately three times faster andsome unnecessary copy operations have been removed from sparse format
interconversions more broadly.
scipy.sparse.linalg.funm_multiply_krylov, a restarted Krylov methodfor evaluating
y = f(tA) b.sparse.linalg, theLinearOperator,LaplacianNd, andSuperLUclasses now support subscription, making them generic types, for
compatibility with
scipy-stubs.sparse.linalgtheeigsandeigshfunctions now accept a newrngparameter.scipy.spatialimprovementsThe
spatial.transformmodule has gained an array API standard compatiblebackend.
transform.Rotationandtransform.RigidTransformhave been extendedfrom 0D single values and 1D arrays to N-D arrays, with standard indexing and
broadcasting rules. Both now have the following additions:
shapeproperty.shapeargument to theiridentity()constructors, which should bepreferred over the existing
numargument. This has also been added as anargument for
Rotation.random()(RigidTransformdoes not currentlyhave a
randomconstructor).axisargument to theirmean()functions.The resulting shapes for
transform.Rotation.from_euler/from_davenporthave changed to make them consistent with broadcastingrules. Angle inputs to Euler angles must now strictly match the number of
provided axes in the last dimension. The resulting
Rotationhas the shapenp.atleast_1d(angles).shape[:-1]. Angle inputs to Davenport angles mustalso match the number of axes in the last dimension. The resulting
Rotationhas the shape
np.broadcast_shapes(np.atleast_2d(axes).shape[:-2], np.atleast_1d(angles).shape[:-1]).Rotation.from_matrixhas gained anassume_validargument that allows forperformance improvements when users can guarantee valid matrix inputs.
from_matrixis now also faster in cases where a known orthogonal matrixis used.
The
scipy.spatial.geometric_slerpfunction can now extrapolate. When given avalue outside the range [0, 1],
geometric_slerp()will continue withthe same rotation outside this range. For example, if spherically
interpolating with
startbeing a point on the equator, andendbeing a point at the north pole, then a value of
t=-1would give you apoint at the south pole.
Rotation.as_eulerandRotation.as_davenportmethods have gained asuppress_warningsparameter to enable suppression of gimbal lock warnings.Rotation.__init__has gained a new optionalscalar_firstparameter andthere is a new
Rotation.__setitem__method.scipy.specialimprovementsimproved parameter ranges and reduced error rates:
btdtria,btdtrib,chdtriv,chndtr,chndtrix,chndtridf,chndtrinc,fdtr,fdtrc,fdtri,gdtria,gdtrix,pdtrik,stdtrandstdtrit.betainc,betaincc,betaincinvandbetainccinvare improved for extreme parameter ranges.scipy.statsimprovementsscipy.stats.matrix_thas been added to represent the matrix t distribution.It supports methods
pdf(andlogpdf) for computing the probabilitydensity function and
rvsfor generating random variates.scipy.stats.Logisticwas added for modeling random variables that follow alogistic distribution.
scipy.stats.quantilenow accepts aweightsargument to specifyfrequency weights.
scipy.stats.quantileis now faster on large arrays as it no longer usesstable sort internally.
scipy.stats.quantilesupports three new values of themethodargument,'round_inward','round_outward', and'round_neareast', for use inthe context of trimming and winsorizing data.
scipy.stats.truncparetonow accepts negative values for the exponent shapeparameter, enabling use of
truncparetoas a more general power lawdistribution.
scipy.stats.logsernow provides a distribution-specific implementation ofthe
sfmethod, improving speed and accuracy.scipy.stats.ansari,scipy.stats.cramervonmises,scipy.stats.cramervonmises_2samp,scipy.stats.epps_singleton_2samp,scipy.stats.fligner,scipy.stats.friedmanchisquare,scipy.stats.kruskal,scipy.stats.ks_1samp,scipy.stats.levene, andscipy.stats.mood.Typically, this improves performance with multidimensional (batch) input.
scipy.stats.andersonhave been updated.methodparameter ofscipy.stats.andersonallows the userto compute p-values by interpolating between tabulated values or using Monte
Carlo simulation. The
methodparameter must be passed explicitlyto add a
pvalueattribute to the result object and avoid a warningabout the upcoming removal of
critical_value,significance_level,and
fit_resultattributes.variantparameter ofscipy.stats.anderson_ksampallows the userto select between three different variants of the statistic, superseding the
midrankparameter which allowed toggling between two. The new'continuous'variant is equivalent to
'discrete'when there are no ties in the sample, butthe calculation is faster. The
variantparameter must be passed explicitly toavoid a warning about the deprecation of the
midrankattribute and the upcomingremoval of
critical_valuesfrom the result object.scipy.stats.zipfianmethods has beenimproved.
scipy.stats.Binomialmethodslogcdfandlogccdfhave been improved in the tails.scipy.stats.trapezoid.fithas been improved.cdf,sf,isf, andppfmethodsof
scipy.stats.binomandscipy.stats.nbinomhas been improved.Covariance,Uniform,Normal,Binomial,Mixture,rv_frozen, andmulti_rv_frozenclasses now support subscription,making them generic types, for compatibility with
scipy-stubs.multivariate_tandmultivariate_normaldistributions have gaineda new
marginalmethod.yeojohnson_llfgained new parametersaxis,nan_policy,and
keepdims, and now returns a numpy scalar where it would previouslyreturn a 0D array.
spearmanrhofunction is an array API compatible substitute forspearmanr.median_abs_deviationfunction has gained akeepdimsparameter.trim_meanfunction has gained newnan_policyandkeepdimsparameters.
Array API Standard Support
now available.
providing improved performance in dispatching to different backends.
scipy.cluster.hierarchy.is_isomorphichas gained support.scipy.interpolate.make_lsq_spline,scipy.interpolate.make_smoothing_spline,scipy.interpolate.make_splrep,scipy.interpolate.make_splprep,scipy.interpolate.generate_knots, andscipy.interpolate.make_interp_splinehave gained support.
scipy.signal.bilinear,scipy.signal.iircomb,scipy.signal.iirdesign,scipy.signal.iirfilter,scipy.signal.iirpeak,scipy.signal.iirnotch,scipy.signal.gammatone, andscipy.signal.group_delayhave gained support.scipy.signal.butter,scipy.signal.buttap,scipy.signal.buttord,scipy.signal.cheby1,scipy.signal.cheb1ap,scipy.signal.cheb1ord,scipy.signal.cheby2,scipy.signal.cheb2ap,scipy.signal.cheb2ord,scipy.signal.bessel,scipy.signal.besselap,scipy.signal.ellip,scipy.signal.ellipap, andscipy.signal.ellipordhave gained support.scipy.signal.savgol_filter,scipy.signal.savgol_coeffs, andscipy.signal.abcd_normalizehave gained support.spatial.transformhas gained support.scipy.integrate.qmc_quad,scipy.integrate.cumulative_simpson,scipy.integrate.cumulative_trapezoid, andscipy.integrate.rombhavegained support.
scipy.linalg.block_diag,scipy.linalg.fiedler, andscipy.linalg.orthogonal_procrusteshave gained support.scipy.interpolate.BSpline,scipy.interpolate.NdBSpline,scipy.interpolate.RegularGridInterpolator, andscipy.interpolate.RBFInterpolatorgained support.scipy.stats.alexandergovern,scipy.stats.bootstrap,scipy.stats.brunnermunzel,scipy.stats.chatterjeexi,scipy.stats.cramervonmises,scipy.stats.cramervonmises_2samp,scipy.stats.epps_singleton_2samp,scipy.stats.false_discovery_control,scipy.stats.fligner,scipy.stats.friedmanchisquare,scipy.stats.iqr,scipy.stats.kruskal,scipy.stats.ks_1samp,scipy.stats.levene,scipy.stats.lmoment,scipy.stats.mannwhitneyu,scipy.stats.median_abs_deviation,scipy.stats.mode,scipy.stats.mood,scipy.stats.ansari,scipy.stats.power,scipy.stats.permutation_test,scipy.stats.sigmaclip,scipy.stats.wilcoxon, andscipy.stats.yeojohnson_llf.scipy.stats.pearsonrhas gained support for JAX and Dask backends.scipy.stats.variationhas gained support for the Dask backend.marraysupport was added forstats.gtstd,stats.directional_stats,stats.bartlett,stats.variation,stats.pearsonr, andstats.entropy.Deprecated features and future changes
scipy.odrmodule is deprecated in v1.17.0 and will be completelyremoved in v1.19.0. Users are suggested to use the
odrpackpackage instead.scipy.sparse.diagsandscipy.sparse.diags_arraywill change in v1.19.0.scipy.linalg.hankelwill no longer ravel multidimensionalinputs and instead will treat them as a batch.
precenterargument ofscipy.signal.lombscargleis deprecated andwill be removed in v1.19.0. Furthermore, some arguments will become keyword
only.
scipy.stats.anderson, the tuple-unpacking behavior of the return objectand attributes
critical_values,significance_level, andfit_resultare deprecated. Use the newmethodparameter to avoid thedeprecation warning. Beginning in SciPy 1.19.0, these features will
no longer be available, and the object returned will have attributes
statisticandpvalue.scipy.stats.anderson_ksamp, themidrankparameter is deprecatedand the new
variantparameter should be preferred. This also means thatthe presence of the
critical_valuesreturn array is deprecated.Expired deprecations
scipy.stats.find_repeatshas been removed. Please usenumpy.unique/numpy.unique_countsinstead.scipy.linalgfunctions for Toeplitz matrices no longer ravel n-d inputarguments; instead, multidimensional input is treated as a batch.
seedandrandfunctions fromscipy.linalg.interpolativehavebeen removed. Use the
rngargument instead.scipy.spatial.distance.cosineandscipy.spatial.distance.correlationnow raise an error.scipy.signal.correlate,scipy.signal.convolve,scipy.signal.lfilter,and
scipy.signal.sosfilt.kulczynski1andsokalmichenerhave been removed fromscipy.spatial.distance.kronhas been removed fromscipy.linalg. Please usenumpy.kron.scipy.interpolate.interpnd.random_stateandpermutationarguments ofscipy.stats.ttest_indhave been removed.sph_harm,clpmn,lpn, andlpmnhave been removed fromscipy.special.Backwards incompatible changes
transform.Rotation.from_euler/from_davenporthave changed to make them consistent with broadcastingrules. Angle inputs to Euler angles must now strictly match the number of
provided axes in the last dimension. The resulting
Rotationhas the shapenp.atleast_1d(angles).shape[:-1]. Angle inputs to Davenport angles mustalso match the number of axes in the last dimension. The resulting
Rotationhas the shape
np.broadcast_shapes(np.atleast_2d(axes).shape[:-2], np.atleast_1d(angles).shape[:-1]).Other changes
The version of the Boost Math library leveraged by SciPy has been
increased from
1.88.0to1.89.0.On POSIX operating systems, SciPy will now use the
'forkserver'multiprocessing context on Python 3.13 and older for
workers=<an-int>calls if the user hasn't configured a default method themselves. This follows
the default behavior on Python 3.14.
Initial support for 64-bit integer (ILP64) BLAS and LAPACK libraries has been
added. To enable it, build SciPy with
-Duse-ilp64=truemeson option, and makesure to have a LAPACK library which exposes both LP64 and ILP64 symbols.
Currently supported LAPACK libraries are MKL and Apple Accelerate. Note that:
LP64 interface;
get_{blas,lapack}_funcsfunctions:scipy.linalg.lapack.get_lapack_funcs(..., use_ilp64="preferred")selectsthe ILP64 variant if available and LP64 variant otherwise;
cython_blasandcython_lapackmodules always contain the LP64routines for ABI compatibility.
Please report any issues with ILP64 you encounter.
Authors
A total of 117 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.
Complete issue list, PR list, and release asset hashes are available in the associated
README.txt.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.