SciPy v1.6.0.rc1 Release Notes
Release Date: 20201211 // 12 months ago
π SciPy 1.6.0 Release Notes
Note : Scipy
1.6.0
is not released yet!SciPy
1.6.0
is the culmination of 6 months of hard work. It contains
β many new features, numerous bugfixes, 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 bugfixes 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 withpython Wd
and check forDeprecationWarning
s).
π Our development attention will now shift to bugfix releases on the
1.6.x branch, and on adding new features on the master branch.π This release requires Python
3.7
+ and NumPy1.16.5
or greater.For running on PyPy, PyPy3
6.0
+ is required.π Highlights of this release
 π
scipy.ndimage
improvements: Fixes and ehancements to boundary extension
π modes for interpolation functions. Support for complexvalued inputs in many
filtering and interpolation functions. Newgrid_mode
option for
scipy.ndimage.zoom
to enable results consistent with scikitimage's
rescale
.  β‘οΈ
scipy.optimize.linprog
has fast, new methods for large, sparse problems
from theHiGHS
library.  β
scipy.stats
improvements including new distributions, a new test, and
β¨ enhancements to existing distributions and tests
π New features
scipy.special
improvementsπ
scipy.special
now has improved support for 64bitLAPACK
backendscipy.odr
improvementsπ
scipy.odr
now has support for 64bit integerBLAS
scipy.odr.ODR
has gained an optionaloverwrite
argument so that existing
files may be overwritten.scipy.integrate
improvementsSome renames of functions with poor names were done, with the old names
retained without being in the reference guide for backwards compatibility
reasons:integrate.simps
was renamed tointegrate.simpson
integrate.trapz
was renamed tointegrate.trapezoid
integrate.cumtrapz
was renamed tointegrate.cumulative_trapezoid
scipy.cluster
improvementsscipy.cluster.hierarchy.DisjointSet
has been added for incremental
connectivity queries.scipy.cluster.hierarchy.dendrogram
return value now also includes leaf color
information inleaves_color_list
.scipy.interpolate
improvementsscipy.interpolate.interp1d
has a new methodnearestup
, similar to the
existing methodnearest
but rounds halfintegers up instead of down.scipy.io
improvementsπ Support has been added for reading arbitrary bit depth integer PCM WAV files
from 1 to 32bit, including the commonlyrequested 24bit depth.scipy.linalg
improvementsThe new function
scipy.linalg.matmul_toeplitz
uses the FFT to compute the
product of a Toeplitz matrix with another matrix.π
scipy.linalg.sqrtm
andscipy.linalg.logm
have performance improvements
thanks to additional Cython code.Python
LAPACK
wrappers have been added forpptrf
,pptrs
,ppsv
,
pptri
, andppcon
.scipy.linalg.norm
and thesvd
family of functions will now use 64bit
integer backends when available.scipy.ndimage
improvementsscipy.ndimage.convolve
,scipy.ndimage.correlate
and their 1d counterparts
now accept both complexvalued images and/or complexvalued filter kernels. All
convolutionbased filters also now accept complexvalued inputs
(e.g.gaussian_filter
,uniform_filter
, etc.).π Multiple fixes and enhancements to boundary handling were introduced to
scipy.ndimage
interpolation functions (i.e.affine_transform
,
geometric_transform
,map_coordinates
,rotate
,shift
,zoom
).A new boundary mode,
gridwrap
was added which wraps images periodically,
using a period equal to the shape of the input image grid. This is in contrast
to the existingwrap
mode which uses a period that is one sample smaller
π¦ than the original signal extent along each dimension.π A longstanding bug in the
reflect
boundary condition has been fixed and
the modegridmirror
was introduced as a synonym forreflect
.A new boundary mode,
gridconstant
is now available. This is similar to
the existing ndimageconstant
mode, but interpolation will still performed
at coordinate values outside of the original image extent. This
gridconstant
mode is consistent with OpenCV'sBORDER_CONSTANT
mode
and scikitimage'sconstant
mode.Spline prefiltering (used internally by
ndimage
interpolation functions
π whenorder >= 2
), now supports all boundary modes rather than always
0οΈβ£ defaulting to mirror boundary conditions. The standalone functions
spline_filter
andspline_filter1d
have analytical boundary conditions
that match modesmirror
,gridwrap
andreflect
.scipy.ndimage
interpolation functions now accept complexvalued inputs. In
this case, the interpolation is applied independently to the real and
imaginary components.The
ndimage
tutorials
π (https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been
β‘οΈ updated with new figures to better clarify the exact behavior of all of the
interpolation boundary modes.scipy.ndimage.zoom
now has agrid_mode
option that changes the coordinate
of the center of the first pixel along an axis from 0 to 0.5. This allows
resizing in a manner that is consistent with the behavior of scikitimage's
resize
andrescale
functions (and OpenCV'scv2.resize
).β‘οΈ
scipy.optimize
improvementsβ‘οΈ
scipy.optimize.linprog
has fast, new methods for large, sparse problems from
π theHiGHS
C++ library.method='highsds'
uses a high performance dual
revised simplex implementation (HSOL),method='highsipm'
uses an
interiorpoint method with crossover, andmethod='highs'
chooses between
the two automatically. These methods are typically much faster and often exceed
the accuracy of otherlinprog
methods, so we recommend explicitly
specifying one of these three method values when usinglinprog
.β‘οΈ
scipy.optimize.quadratic_assignment
has been added for approximate solution
of the quadratic assignment problem.scipy.optimize.linear_sum_assignment
now has a substantially reduced overhead
for small cost matrix sizesπ
scipy.optimize.least_squares
has improved performance when the user provides
π the jacobian as a sparse jacobian already incsr_matrix
formatβ‘οΈ
scipy.optimize.linprog
now has anrr_method
argument for specification
of the method used for redundancy handling, and a new method for this purpose
is available based on the interpolative decomposition approach.π¦
scipy.signal
improvementsπ¦
scipy.signal.gammatone
has been added to design FIR or IIR filters that
model the human auditory system.π¦
scipy.signal.iircomb
has been added to design IIR peaking/notching comb
π¦ filters that can boost/attenuate a frequency from a signal.π
scipy.signal.sosfilt
performance has been improved to avoid some previously
observed slowdownsπ
scipy.signal.windows.taylor
has been addedthe Taylor window function is
π¦ commonly used in radar digital signal processingπ¦
scipy.signal.gauss_spline
now supportslist
type input for consistency
with other related SciPy functionsπ¦
scipy.signal.correlation_lags
has been added to allow calculation of the lag/
displacement indices array for 1D crosscorrelation.π
scipy.sparse
improvementsA solver for the minimum weight full matching problem for bipartite graphs,
also known as the linear assignment problem, has been added in
scipy.sparse.csgraph.min_weight_full_bipartite_matching
. In particular, this
provides functionality analogous to that of
scipy.optimize.linear_sum_assignment
, but with improved performance for sparse
inputs, and the ability to handle inputs whose dense representations would not
fit in memory.π The time complexity of
scipy.sparse.block_diag
has been improved dramatically
from quadratic to linear.π
scipy.sparse.linalg
improvementsβ‘οΈ The vendored version of
SuperLU
has been updatedscipy.fft
improvementsπ The vendored
pocketfft
library now supports compiling with ARM neon vector
extensions and has improved thread pool behavior.scipy.spatial
improvementsThe python implementation of
KDTree
has been dropped andKDTree
is now
implemented in terms ofcKDTree
. You can now expectcKDTree
like
π performance by default. This also meanssys.setrecursionlimit
no longer
needs to be increased for querying large trees.β‘οΈ
transform.Rotation
has been updated with support for Modified Rodrigues
Parameters alongside the existing rotation representations (PR gh12667).scipy.spatial.transform.Rotation
has been partially cythonized, with some
π performance improvements observedπ
scipy.spatial.distance.cdist
has improved performance with theminkowski
metric, especially for pnorm values of 1 or 2.scipy.stats
improvementsπ New distributions have been added to
scipy.stats
: The asymmetric Laplace continuous distribution has been added as
scipy.stats.laplace_asymmetric
.  The negative hypergeometric distribution has been added as
scipy.stats.nhypergeom
.  The multivariate t distribution has been added as
scipy.stats.multivariate_t
.  The multivariate hypergeometric distribution has been added as
scipy.stats.multivariate_hypergeom
.
The
fit
method has been overridden for several distributions (laplace
,
pareto
,rayleigh
,invgauss
,logistic
,gumbel_l
,
gumbel_r
); they now use analytical, distributionspecific maximum
likelihood estimation results for greater speed and accuracy than the generic
(numerical optimization) implementation.β The onesample CramΓ©rvon Mises test has been added as
scipy.stats.cramervonmises
.β An option to compute onesided pvalues was added to
scipy.stats.ttest_1samp
,
scipy.stats.ttest_ind_from_stats
,scipy.stats.ttest_ind
and
βscipy.stats.ttest_rel
.The function
scipy.stats.kendalltau
now has an option to compute Kendall's
π tauc (also known as Stuart's tauc), and support has been added for exact
pvalue calculations for sample sizes> 171
.stats.trapz
was renamed tostats.trapezoid
, with the former name retained
as an alias for backwards compatibility reasons.The function
scipy.stats.linregress
now includes the standard error of the
intercept in its return value.The
_logpdf
,_sf
, and_isf
methods have been added to
scipy.stats.nakagami
;_sf
and_isf
methods also added to
scipy.stats.gumbel_r
The
sf
method has been added toscipy.stats.levy
andscipy.stats.levy_l
for improved precision.scipy.stats.binned_statistic_dd
performance improvements for the following
computed statistics:max
,min
,median
, andstd
.We gratefully acknowledge the ChanZuckerberg Initiative Essential Open Source
π Software for Science program for supporting many of these improvements to
scipy.stats
.π Deprecated features
scipy.spatial
changesπ Calling
KDTree.query
withk=None
to find all neighbours is deprecated.
UseKDTree.query_ball_point
instead.π
distance.wminkowski
was deprecated; usedistance.minkowski
and supply
weights with thew
keyword instead.Backwards incompatible changes
scipy
changesπ Using
scipy.fft
as a function aliasingnumpy.fft.fft
was removed after
π being deprecated in SciPy1.4.0
. As a result, thescipy.fft
submodule
π¦ must be explicitly imported now, in line with other SciPy subpackages.π¦
scipy.signal
changesThe output of
decimate
,lfilter_zi
,lfiltic
,sos2tf
, and
sosfilt_zi
have been changed to matchnumpy.result_type
of their inputs.π The window function
slepian
was removed. It had been deprecated since SciPy
1.1
.scipy.spatial
changesπ
cKDTree.query
now returns 64bit rather than 32bit integers on Windows,
making behaviour consistent between platforms (PR gh12673).scipy.stats
changesThe
frechet_l
andfrechet_r
distributions were removed. They were
π deprecated since SciPy1.0
.Other changes
π
setup_requires
was removed fromsetup.py
. This means that users
invokingpython setup.py install
without having numpy already installed
will now get an error, rather than having numpy installed for them via
easy_install
. This install method was always fragile and problematic, users
are encouraged to usepip
when installing from source. Fixed a bug in
scipy.optimize.dual_annealing
accept_reject
calculation
that caused uphill jumps to be accepted less frequently.  The time required for (un)pickling of
scipy.stats.rv_continuous
,
scipy.stats.rv_discrete
, andscipy.stats.rv_frozen
has been significantly
reduced (gh12550). Inheriting subclasses should note that__setstate__
no
longer calls__init__
upon unpickling.
Authors
 @endolith
 @vkk800
 aditya +
 George Bateman +
 Christoph Baumgarten
 Peter Bell
 Tobias Biester +
 Keaton J. Burns +
 Evgeni Burovski
 RΓΌdiger Busche +
 Matthias Bussonnier
 Dominic C +
 Corallus Caninus +
 CJ Carey
 Thomas A Caswell
 chapochn +
 LucΓa Cheung
 Zach Colbert +
 Coloquinte +
 Yannick Copin +
 Devin Crowley +
 Terry Davis +
 MichaΓ«l Defferrard +
 devonwp +
 Didier +
 divenex +
 Thomas Duvernay +
 Eoghan O'Connell +
 GΓΆkΓ§en Eraslan
 Kristian Eschenburg +
 Ralf Gommers
 Thomas Grainger +
 GreatV +
 Gregory Gundersen +
 hvetinari +
 Matt Haberland
 Mark Harfouche +
 He He +
 Alex Henrie
 ChunMing Huang +
 Martin James McHugh III +
 Alex Izvorski +
 Joey +
 ST John +
 Jonas Jonker +
 Julius Bier Kirkegaard
 Marcin Konowalczyk +
 Konrad0
 Sam Van Kooten +
 Sergey Koposov +
 Peter Mahler Larsen
 Eric Larson
 Antony Lee
 Gregory R. Lee
 LoΓ―c EstΓ¨ve
 JeanLuc Margot +
 MarkusKoebis +
 Nikolay Mayorov
 G. D. McBain
 Andrew McCluskey +
 Nicholas McKibben
 Sturla Molden
 Denali Molitor +
 Eric Moore
 Shashaank N +
 Prashanth Nadukandi +
 nbelakovski +
 Andrew Nelson
 Nick +
 Nikola ForrΓ³ +
 odidev
 ofirr +
 Sambit Panda
 Dima Pasechnik
 Tirth Patel +
 PaweΕ RedzyΕski +
 Vladimir Philipenko +
 Philipp ThΓΆlke +
 Ilhan Polat
 Eugene Prilepin +
 Vladyslav Rachek
 Ram Rachum +
 Tyler Reddy
 Martin Reinecke +
 Simon Segerblom Rex +
 Lucas Roberts
 Benjamin Rowell +
 Eli Rykoff +
 Atsushi Sakai
 Moritz Schulte +
 Daniel B. Smith
 Steve Smith +
 Jan Soedingrekso +
 Victor Stinner +
 Jose Storopoli +
 Diana Sukhoverkhova +
 SΓΈren Fuglede JΓΈrgensen
 taoky +
 Mike Taves +
 Ian Thomas +
 Will Tirone +
 Frank Torres +
 Seth Troisi
 Ronald van Elburg +
 Hugo van Kemenade
 Paul van Mulbregt
 Saul Ivan Rivas Vega +
 Pauli Virtanen
 Jan Vleeshouwers
 Samuel Wallan
 Warren Weckesser
 Ben West +
 Eric Wieser
 WillTirone +
 Levi John Wolf +
 Zhiqing Xiao
 Rory Yorke +
 Yun Wang (Maigo) +
 Egor Zemlyanoy +
 ZhihuiChen0903 +
 Jacob Zhong +
π A total of 121 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.  π
Previous changes from v1.5.4

π SciPy 1.5.4 Release Notes
π SciPy
1.5.4
is a bugfix release with no new features
compared to1.5.3
. Importantly, wheels are now available
for Python3.9
and a more complete fix has been applied for
π issues building with XCode12
.Authors
 Peter Bell
 CJ Carey
 Andrew McCluskey +
 Andrew Nelson
 Tyler Reddy
 Eli Rykoff +
 Ian Thomas +
π A total of 7 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.