pypi / scipy
scipy
What changed in scipy 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
46 breaking20 deprecations67 new APIs and options18 performance17 behavior and defaults1 tooling3 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initscipy 1172 changes
Breaking changes 46
The minimum required GCC toolchain version has increased to 10.3.0.
SciPy 1.18.0 requires NumPy 2.0.0 or greater.
SciPy 1.18.0 requires Python 3.12–3.14.
bandwidth supports batching for inputs with at least two dimensions; for 2D input its return type changes from (int, int) to (np.int64, np.int64).
The second return value's type changes from bool to NDArray[np.bool].
Eigenvalue outputs are no longer guaranteed to be Fortran-ordered; ensure the desired ordering manually when array strides matter.
The disp parameter has been removed.
Residual behavior changes: gelsy or underdetermined/square systems return empty residuals; gesld/gelss overdetermined systems return residuals, with NaN for slices not full column rank.
The disp parameter has been removed.
sqrtm adds ILP64 support; its disp parameter has been removed.
The blocksize parameter has been removed.
The disp parameter has been removed.
The disp parameter has been removed.
The iprint parameter has been removed.
The deprecated atol argument has been removed.
Improved numerical stability and efficiency; raises ValueError when a has leading zeros or when the filter is unstable due to a pole at z = 1.
Supports batching k, n, and p; the BinomTestResult k and n attribute types change from int to np.float64.
With sparse=True, the second output is now a sparse array rather than a sparse matrix and can represent counts for more than two input sequences.
Returns NaNs when category-probability rows do not sum to unity; multinomial.rvs raises an error in those cases instead of adjusting the final probability.
Returns a tuple of arrays instead of a single ndarray.
Output is now always floating point, with a result dtype determined by the input and a Python float.
SciPy 1.17.0 requires NumPy 1.26.4 or greater.
SciPy 1.17.0 requires Python 3.11–3.14.
The mutable instance attribute is now a read-only property.
The mutable grid instance attribute is now a read-only property.
The mutable values instance attribute is now a read-only property.
In SciPy 1.19.0, multidimensional inputs will be treated as a batch instead of being raveled.
The rand function has been removed; use the rng argument instead.
The seed function has been removed; use the rng argument instead.
The function has been removed; use numpy.kron.
Complex inputs now raise an error.
Complex inputs now raise an error.
The distance function has been removed.
The distance function has been removed.
Spherical interpolation now extrapolates when t is outside [0, 1].
Output shapes now follow broadcasting rules, and angle inputs must match the number of axes in the last dimension.
Output shapes now follow broadcasting rules, and angle inputs must strictly match the number of axes in the last dimension.
The function has been removed.
The function has been removed.
The function has been removed.
The function has been removed.
The new variant parameter selects among three statistic variants, replacing the two-way midrank toggle.
The function has been removed; use numpy.unique or numpy.unique_counts instead.
The random_state and permutation arguments have been removed.
The random_state and permutation arguments have been removed.
The function gained axis, nan_policy, and keepdims parameters and now returns a NumPy scalar instead of a 0D array in the described case.
Deprecations 20
Calling rmatvec or matvec on column vectors now issues a FutureWarning; use rmatmat or matmat for equivalent behavior and batch dimensions.
The unintentionally public function has been deprecated.
Deprecated because it was deemed not practically useful.
Deprecated because it was deemed not practically useful.
Deprecated because it was deemed not practically useful.
Setting spmatrix=True is deprecated for mmio, FFM, hb, and matlab/_mio readers, including when it is the default.
Using non-LAPACK dtypes is deprecated; after the deprecations expire, linear algebra functions will allow integers (upcast to float) and single/double precision float/complex dtypes.
Passing lwork is deprecated; remove it because the function computes the optimal work-array size automatically.
When no inputs are sparse, returning spmatrix is deprecated; the return type will change to sparray. Include a sparse input to control the output type.
When no inputs are sparse, returning spmatrix is deprecated; the return type will change to sparray. Include a sparse input to control the output type.
When no inputs are sparse, returning spmatrix is deprecated; the return type will change to sparray. Include a sparse input to control the output type.
Deprecated in favor of other superior functions.
Deprecated in favor of other superior functions.
Deprecated in favor of other superior functions.
Deprecated because Delaunay provides the functionality more conveniently.
The module is deprecated in 1.17.0 and will be removed in 1.19.0; users are directed to odrpack.
The precenter argument is deprecated and will be removed in SciPy 1.19.0; some arguments will also become keyword-only.
Tuple unpacking and the critical_values, significance_level, and fit_result attributes are deprecated; the 1.19.0 result will expose statistic and pvalue.
The presence of the critical_values return array is deprecated.
The midrank parameter is deprecated; use variant instead.
New APIs and options 67
Machinery is provided for downstream cython_lapack users to handle LP64/ILP64 backend builds.
eigvals adds the overwrite_b keyword argument for consistency with similar linalg functions.
derivative now supports passing kwargs to the function whose derivative is desired.
Supports passing kwargs to the function being integrated.
Supports passing kwargs to the function being integrated.
Functions now support passing kwargs to the callable function.
Adds Whittaker-Henderson smoothing for discrete signals, with smoothness penalties and automatic penalty-strength selection using the REML criterion.
LinearOperator supports n-dimensional input and adds an rdot method.
Adds a method argument.
Adds support for the nan_policy keyword argument.
Adds support for the nan_policy keyword argument.
Now accepts an axis argument.
Adds computation of population L-moments.
Adds a vectorized function reproducing much of the functionality of plotting_positions, percentileofscore, ecdf.cdf, and cumfreq.
Adds nan_policy, axis, and keepdims arguments.
Adds nan_policy, axis, and keepdims arguments.
Adds nan_policy, axis, and keepdims arguments.
The result object adds zstatistic.
Adds support for the nan_policy keyword argument.
Adds axis and keepdims arguments.
Adds axis and keepdims arguments.
Adds support for the nan_policy keyword argument.
Adds support for the nan_policy keyword argument.
Adds support for the nan_policy keyword argument.
A new argument to the __call__ methods of LinearNDInterpolator and CloughTocher2dInterpolator lets users increase QHull simplex assignment tolerance to help avoid holes in some interpolation problems.
All sparse array and matrix formats now support matrix_transpose and .mT.
A private experimental build option allows building SciPy from source without a Fortran compiler.
AAA has gained an axis parameter and improved numerical stability.
The interpolator supports multidimensional, batched inputs and has an axis parameter to select the interpolation axis.
The new bc_type argument selects spline-fitting boundary conditions: not-a-knot (default) or periodic.
The new bc_type argument selects spline-fitting boundary conditions: not-a-knot (default) or periodic.
The new bc_type argument selects spline-fitting boundary conditions: not-a-knot (default) or periodic.
A new derivative method constructs a spline representing a partial derivative of the given spline.
An array API-compatible backend improves support for GPU arrays.
The new assume_a keyword bypasses matrix-structure detection when the structure is known.
The lower keyword selects the upper or lower triangle of symmetric inputs.
SLSQP callbacks can opt into the new callback interface by accepting the intermediate_result keyword argument.
trust-exact accepts a solver-specific subproblem_maxiter option to help convergence with ill-conditioned Hessians.
Window names can use _periodic and _symmetric suffixes to select window periodicity, overriding fftbin.
The new axes keyword specifies the axes used to calculate the two-dimensional analytic signal.
The new update method accepts a dict, dict.items()-like iterable, or another dok_array and validates index-tuple keys.
A sparse construction function for expanding dimensions has been added.
The function now accepts an rng parameter.
The function now accepts an rng parameter.
A restarted Krylov method for evaluating y = f(tA) b has been added.
A sparse construction function for permuting dimensions has been added.
A sparse construction function for swapping axes has been added.
RigidTransform now supports N-D arrays and provides a shape property; its identity constructor accepts shape.
The mean function now accepts an axis argument.
Rotation now supports N-D arrays and provides a shape property; its identity constructor and random constructor also accept shape.
The constructor has gained an optional scalar_first parameter.
Rotation now provides a __setitem__ method.
The suppress_warnings parameter enables suppression of gimbal lock warnings.
The suppress_warnings parameter enables suppression of gimbal lock warnings.
The assume_valid argument enables performance improvements when callers can guarantee valid matrix inputs.
The mean function now accepts an axis argument.
The new method parameter computes p-values by interpolation or Monte Carlo simulation; it must be passed explicitly to add pvalue and avoid a warning about upcoming result-attribute removal.
A Logistic distribution for modeling logistic random variables has been added.
The matrix t distribution has been added, with pdf, logpdf, and rvs methods.
The function has gained a keepdims parameter.
The distribution has gained a marginal method.
The distribution has gained a marginal method.
The method argument adds round_inward, round_outward, and round_neareast for trimming and winsorizing data.
A weights argument specifies frequency weights.
An array API-compatible substitute for spearmanr has been added.
The function has gained nan_policy and keepdims parameters.
The Meson -Duse-ilp64=true option enables optional ILP64 BLAS and LAPACK support when building SciPy.
Performance 18
cholesky leverages symmetry properties for performance, especially for real matrices, and its batching loop is now implemented in C.
det is rewritten in C++ with batching support in compiled code.
The batching loop has moved to C, providing a substantial speedup for batched input.
expm has improved performance and adds ILP64 support.
The batching loop has moved to C, providing a substantial speedup for batched input.
lu is rewritten in C++ with batching support in compiled code.
The batching loop has moved to C, providing a substantial speedup for batched input.
Performance has improved for batched inputs.
The batching loop has moved to C, providing a substantial speedup for batched input.
The function has improved performance and array API support.
The integration routine has been ported from Fortran77 to C.
The integration routine has been ported from Fortran77 to C.
The integration routine has been ported from Fortran77 to C.
An empty integration interval now uses a fast path that returns 0.
The integration routine has been ported from Fortran77 to C.
The integration routine has been ported from Fortran77 to C.
Performance of cubic and quintic modes has improved.
Batched solve performance has improved for certain matrix structures.
Behavior and default changes 17
SciPy's internal FFT backend switches from pocketfft to ducc0.fft; cached plans over 1MB are no longer cached, mainly affecting huge 1D transforms of prime and near-prime sizes.
Can now return sparse arrays rather than sparse matrices.
The COBYQA method can now be called concurrently by multiple threads instead of serializing calls.
Rotation and RigidTransform can now be composed directly by multiplication, automatically promoting Rotation.
minres now supports complex Hermitian matrices.
Now supports N-dimensional input.
Now supports N-dimensional input.
Now supports N-dimensional input.
The Fortran77 library has been ported to C, enabling external random generators such as NumPy PRNGs for reproducible runs.
COO arrays now support indexing, including slices, arrays, newaxis, and Ellipsis in 1D, 2D, and nD.
On POSIX with Python 3.13 and older, workers=<an-int> calls now use the forkserver multiprocessing context unless the user configured a default method.
The function now natively supports batched inputs.
The routine detects matrix structure, selects a suitable inversion routine, and warns about ill-conditioned inputs; batched performance also improves.
The default dtype behavior is scheduled to change in SciPy 1.19.0.
The default dtype behavior is scheduled to change in SciPy 1.19.0.
The sparse kron function now supports nD inputs.
Negative exponent shape parameters are now accepted, allowing truncpareto to model more general power laws.
Tooling 1
SciPy now has a Pixi package definition for building from source inside Pixi workspaces.
Fixes and other changes 3
Binaries are available on PyPI for Python 3.15.
With keep_feasible constraints, the objective is no longer called with an x array that would make the constraints infeasible.
The Fortran77 library has been ported to C with PRNG enhancements and other improvements.