SciPy v1.6.0.rc1 Release Notes
Release Date: 2020-12-11 // over 2 years 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 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 withpython -Wd
and check forDeprecationWarning
s).
π Our development attention will now shift to bug-fix 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 complex-valued inputs in many
filtering and interpolation functions. Newgrid_mode
option for
scipy.ndimage.zoom
to enable results consistent with scikit-image'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 64-bitLAPACK
backendscipy.odr
improvementsπ
scipy.odr
now has support for 64-bit 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 methodnearest-up
, similar to the
existing methodnearest
but rounds half-integers up instead of down.scipy.io
improvementsπ Support has been added for reading arbitrary bit depth integer PCM WAV files
from 1- to 32-bit, including the commonly-requested 24-bit 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 64-bit
integer backends when available.scipy.ndimage
improvementsscipy.ndimage.convolve
,scipy.ndimage.correlate
and their 1d counterparts
now accept both complex-valued images and/or complex-valued filter kernels. All
convolution-based filters also now accept complex-valued 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,
grid-wrap
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 long-standing bug in the
reflect
boundary condition has been fixed and
the modegrid-mirror
was introduced as a synonym forreflect
.A new boundary mode,
grid-constant
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
grid-constant
mode is consistent with OpenCV'sBORDER_CONSTANT
mode
and scikit-image'sconstant
mode.Spline pre-filtering (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
,grid-wrap
andreflect
.scipy.ndimage
interpolation functions now accept complex-valued 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 scikit-image'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='highs-ds'
uses a high performance dual
revised simplex implementation (HSOL),method='highs-ipm'
uses an
interior-point 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 added--the 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 cross-correlation.π
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 gh-12667).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 p-norm 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, distribution-specific maximum
likelihood estimation results for greater speed and accuracy than the generic
(numerical optimization) implementation.β The one-sample CramΓ©r-von Mises test has been added as
scipy.stats.cramervonmises
.β An option to compute one-sided p-values 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
π tau-c (also known as Stuart's tau-c), and support has been added for exact
p-value 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 Chan-Zuckerberg 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 64-bit rather than 32-bit integers on Windows,
making behaviour consistent between platforms (PR gh-12673).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 +
- h-vetinari +
- Matt Haberland
- Mark Harfouche +
- He He +
- Alex Henrie
- Chun-Ming 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
- Jean-Luc 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 bug-fix 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.