scipy/scipy: SciPy 0.19.0
Creators
- Pauli Virtanen
- Ralf Gommers
- Travis E. Oliphant1
- Evgeni Burovski
- David Cournapeau2
- Warren Weckesser
- alexbrc
- Pearu Peterson
- endolith
- Stefan van der Walt3
- Denis Laxalde4
- Matthew Brett5
- Jarrod Millman5
- Lars
- Nikolay Mayorov
- Josh Wilson
- eric-jones
- Robert Kern
- Eric Moore
- Tim Leslie6
- Josef Perktold
- Andrew Nelson
- Yu Feng3
- Jake Vanderplas7
- CJ Carey8
- Blake Griffith
- Abraham Escalante
- Tyler Reddy9
- Rob Falck10
- Eric Larson7
- 1. Continuum Analytics
- 2. Enthought
- 3. University of California, Berkeley
- 4. @logilab
- 5. UC Berkeley
- 6. Breakaway Consulting
- 7. University of Washington
- 8. UMass Department of Computer Science
- 9. Los Alamos National Laboratory
- 10. NASA Glenn Research Center
Description
#
SciPy 0.19.0 Release NotesSciPy 0.19.0 is the culmination of 7 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. Moreover, our development attention will now shift to bug-fix releases on the 0.19.x branch, and on adding new features on the master branch.
This release requires Python 2.7 or 3.4-3.6 and NumPy 1.8.2 or greater.
Highlights of this release include:
- A unified foreign function interface layer,
scipy.LowLevelCallable
.
- A unified foreign function interface layer,
- Cython API for scalar, typed versions of the universal functions from
the
scipy.special
module, viacimport scipy.special.cython_special
.
- Cython API for scalar, typed versions of the universal functions from
the
Foreign function interface improvements
scipy.LowLevelCallable
provides a new unified interface for wrapping
low-level compiled callback functions in the Python space. It supports
Cython imported "api" functions, ctypes function pointers, CFFI function
pointers, PyCapsules
, Numba jitted functions and more.
See gh-6509 <https://github.com/scipy/scipy/pull/6509>
_ for details.
scipy.linalg
improvements
The function scipy.linalg.solve
obtained two more keywords assume_a
and
transposed
. The underlying LAPACK routines are replaced with "expert"
versions and now can also be used to solve symmetric, hermitian and positive
definite coefficient matrices. Moreover, ill-conditioned matrices now cause
a warning to be emitted with the estimated condition number information. Old
sym_pos
keyword is kept for backwards compatibility reasons however it
is identical to using assume_a='pos'
. Moreover, the debug
keyword,
which had no function but only printing the overwrite_<a, b>
values, is
deprecated.
The function scipy.linalg.matrix_balance
was added to perform the so-called
matrix balancing using the LAPACK xGEBAL routine family. This can be used to
approximately equate the row and column norms through diagonal similarity
transformations.
The functions scipy.linalg.solve_continuous_are
and
scipy.linalg.solve_discrete_are
have numerically more stable algorithms.
These functions can also solve generalized algebraic matrix Riccati equations.
Moreover, both gained a balanced
keyword to turn balancing on and off.
scipy.spatial
improvements
scipy.spatial.SphericalVoronoi.sort_vertices_of_regions
has been re-written in
Cython to improve performance.
scipy.spatial.SphericalVoronoi
can handle > 200 k points (at least 10 million)
and has improved performance.
The function scipy.spatial.distance.directed_hausdorff
was
added to calculate the directed Hausdorff distance.
count_neighbors
method of scipy.spatial.cKDTree
gained an ability to
perform weighted pair counting via the new keywords weights
and
cumulative
. See gh-5647 <https://github.com/scipy/scipy/pull/5647>
_ for
details.
scipy.spatial.distance.pdist
and scipy.spatial.distance.cdist
now support
non-double custom metrics.
scipy.ndimage
improvements
The callback function C API supports PyCapsules in Python 2.7
Multidimensional filters now allow having different extrapolation modes for different axes.
scipy.optimize
improvements
The scipy.optimize.basinhopping
global minimizer obtained a new keyword,
seed
, which can be used to seed the random number generator and obtain
repeatable minimizations.
The keyword sigma
in scipy.optimize.curve_fit
was overloaded to also accept
the covariance matrix of errors in the data.
scipy.signal
improvements
The function scipy.signal.correlate
and scipy.signal.convolve
have a new
optional parameter method
. The default value of auto
estimates the fastest
of two computation methods, the direct approach and the Fourier transform
approach.
A new function has been added to choose the convolution/correlation method,
scipy.signal.choose_conv_method
which may be appropriate if convolutions or
correlations are performed on many arrays of the same size.
New functions have been added to calculate complex short time fourier
transforms of an input signal, and to invert the transform to recover the
original signal: scipy.signal.stft
and scipy.signal.istft
. This
implementation also fixes the previously incorrect ouput of
scipy.signal.spectrogram
when complex output data were requested.
The function scipy.signal.sosfreqz
was added to compute the frequency
response from second-order sections.
The function scipy.signal.unit_impulse
was added to conveniently
generate an impulse function.
The function scipy.signal.iirnotch
was added to design second-order
IIR notch filters that can be used to remove a frequency component from
a signal. The dual function scipy.signal.iirpeak
was added to
compute the coefficients of a second-order IIR peak (resonant) filter.
The function scipy.signal.minimum_phase
was added to convert linear-phase
FIR filters to minimum phase.
The functions scipy.signal.upfirdn
and scipy.signal.resample_poly
are now
substantially faster when operating on some n-dimensional arrays when n > 1.
The largest reduction in computation time is realized in cases where the size
of the array is small (<1k samples or so) along the axis to be filtered.
scipy.fftpack
improvements
Fast Fourier transform routines now accept np.float16
inputs and upcast
them to np.float32
. Previously, they would raise an error.
scipy.cluster
improvements
Methods "centroid"
and "median"
of scipy.cluster.hierarchy.linkage
have been significantly sped up. Long-standing issues with using linkage
on
large input data (over 16 GB) have been resolved.
scipy.sparse
improvements
The functions scipy.sparse.save_npz
and scipy.sparse.load_npz
were added,
providing simple serialization for some sparse formats.
The prune
method of classes bsr_matrix
, csc_matrix
, and csr_matrix
was updated to reallocate backing arrays under certain conditions, reducing
memory usage.
The methods argmin
and argmax
were added to classes coo_matrix
,
csc_matrix
, csr_matrix
, and bsr_matrix
.
New function scipy.sparse.csgraph.structural_rank
computes the structural
rank of a graph with a given sparsity pattern.
New function scipy.sparse.linalg.spsolve_triangular
solves a sparse linear
system with a triangular left hand side matrix.
scipy.special
improvements
Scalar, typed versions of universal functions from scipy.special
are available
in the Cython space via cimport
from the new module
scipy.special.cython_special
. These scalar functions can be expected to be
significantly faster then the universal functions for scalar arguments. See
the scipy.special
tutorial for details.
Better control over special-function errors is offered by the
functions scipy.special.geterr
and scipy.special.seterr
and the
context manager scipy.special.errstate
.
The names of orthogonal polynomial root functions have been changed to
be consistent with other functions relating to orthogonal
polynomials. For example, scipy.special.j_roots
has been renamed
scipy.special.roots_jacobi
for consistency with the related
functions scipy.special.jacobi
and scipy.special.eval_jacobi
. To
preserve back-compatibility the old names have been left as aliases.
Wright Omega function is implemented as scipy.special.wrightomega
.
scipy.stats
improvements
The function scipy.stats.weightedtau
was added. It provides a weighted
version of Kendall's tau.
New class scipy.stats.multinomial
implements the multinomial distribution.
New class scipy.stats.rv_histogram
constructs a continuous univariate
distribution with a piecewise linear CDF from a binned data sample.
New class scipy.stats.argus
implements the Argus distribution.
scipy.interpolate
improvements
New class scipy.interpolate.BSpline
represents splines. BSpline
objects
contain knots and coefficients and can evaluate the spline. The format is
consistent with FITPACK, so that one can do, for example::
>>> t, c, k = splrep(x, y, s=0)
>>> spl = BSpline(t, c, k)
>>> np.allclose(spl(x), y)
spl*
functions, scipy.interpolate.splev
, scipy.interpolate.splint
,
scipy.interpolate.splder
and scipy.interpolate.splantider
, accept both
BSpline
objects and (t, c, k)
tuples for backwards compatibility.
For multidimensional splines, c.ndim > 1
, BSpline
objects are consistent
with piecewise polynomials, scipy.interpolate.PPoly
. This means that
BSpline
objects are not immediately consistent with
scipy.interpolate.splprep
, and one cannot do
>>> BSpline(*splprep([x, y])[0])
. Consult the scipy.interpolate
test suite
for examples of the precise equivalence.
In new code, prefer using scipy.interpolate.BSpline
objects instead of
manipulating (t, c, k)
tuples directly.
New function scipy.interpolate.make_interp_spline
constructs an interpolating
spline given data points and boundary conditions.
New function scipy.interpolate.make_lsq_spline
constructs a least-squares
spline approximation given data points.
scipy.integrate
improvements
Now scipy.integrate.fixed_quad
supports vector-valued functions.
scipy.interpolate.splmake
, scipy.interpolate.spleval
and
scipy.interpolate.spline
are deprecated. The format used by splmake/spleval
was inconsistent with splrep/splev
which was confusing to users.
scipy.special.errprint
is deprecated. Improved functionality is
available in scipy.special.seterr
.
calling scipy.spatial.distance.pdist
or scipy.spatial.distance.cdist
with
arguments not needed by the chosen metric is deprecated. Also, metrics
"old_cosine"
and "old_cos"
are deprecated.
The deprecated scipy.weave
submodule was removed.
scipy.spatial.distance.squareform
now returns arrays of the same dtype as
the input, instead of always float64.
scipy.special.errprint
now returns a boolean.
The function scipy.signal.find_peaks_cwt
now returns an array instead of
a list.
scipy.stats.kendalltau
now computes the correct p-value in case the
input contains ties. The p-value is also identical to that computed by
scipy.stats.mstats.kendalltau
and by R. If the input does not
contain ties there is no change w.r.t. the previous implementation.
The function scipy.linalg.block_diag
will not ignore zero-sized matrices anymore.
Instead it will insert rows or columns of zeros of the appropriate size.
See gh-4908 for more details.
SciPy wheels will now report their dependency on numpy
on all platforms.
This change was made because Numpy wheels are available, and because the pip
upgrade behavior is finally changing for the better (use
--upgrade-strategy=only-if-needed
for pip >= 8.2
; that behavior will
become the default in the next major version of pip
).
Numerical values returned by scipy.interpolate.interp1d
with kind="cubic"
and "quadratic"
may change relative to previous scipy versions. If your
code depended on specific numeric values (i.e., on implementation
details of the interpolators), you may want to double-check your results.
- @endolith
- Max Argus +
- Hervé Audren
- Alessandro Pietro Bardelli +
- Michael Benfield +
- Felix Berkenkamp
- Matthew Brett
- Per Brodtkorb
- Evgeni Burovski
- Pierre de Buyl
- CJ Carey
- Brandon Carter +
- Tim Cera
- Klesk Chonkin
- Christian Häggström +
- Luca Citi
- Peadar Coyle +
- Daniel da Silva +
- Greg Dooper +
- John Draper +
- drlvk +
- David Ellis +
- Yu Feng
- Baptiste Fontaine +
- Jed Frey +
- Siddhartha Gandhi +
- Wim Glenn +
- Akash Goel +
- Christoph Gohlke
- Ralf Gommers
- Alexander Goncearenco +
- Richard Gowers +
- Alex Griffing
- Radoslaw Guzinski +
- Charles Harris
- Callum Jacob Hays +
- Ian Henriksen
- Randy Heydon +
- Lindsey Hiltner +
- Gerrit Holl +
- Hiroki IKEDA +
- jfinkels +
- Mher Kazandjian +
- Thomas Keck +
- keuj6 +
- Kornel Kielczewski +
- Sergey B Kirpichev +
- Vasily Kokorev +
- Eric Larson
- Denis Laxalde
- Gregory R. Lee
- Josh Lefler +
- Julien Lhermitte +
- Evan Limanto +
- Jin-Guo Liu +
- Nikolay Mayorov
- Geordie McBain +
- Josue Melka +
- Matthieu Melot
- michaelvmartin15 +
- Surhud More +
- Brett M. Morris +
- Chris Mutel +
- Paul Nation
- Andrew Nelson
- David Nicholson +
- Aaron Nielsen +
- Joel Nothman
- nrnrk +
- Juan Nunez-Iglesias
- Mikhail Pak +
- Gavin Parnaby +
- Thomas Pingel +
- Ilhan Polat +
- Aman Pratik +
- Sebastian Pucilowski
- Ted Pudlik
- puenka +
- Eric Quintero
- Tyler Reddy
- Joscha Reimer
- Antonio Horta Ribeiro +
- Edward Richards +
- Roman Ring +
- Rafael Rossi +
- Colm Ryan +
- Sami Salonen +
- Alvaro Sanchez-Gonzalez +
- Johannes Schmitz
- Kari Schoonbee
- Yurii Shevchuk +
- Jonathan Siebert +
- Jonathan Tammo Siebert +
- Scott Sievert +
- Sourav Singh
- Byron Smith +
- Srikiran +
- Samuel St-Jean +
- Yoni Teitelbaum +
- Bhavika Tekwani
- Martin Thoma
- timbalam +
- Svend Vanderveken +
- Sebastiano Vigna +
- Aditya Vijaykumar +
- Santi Villalba +
- Ze Vinicius
- Pauli Virtanen
- Matteo Visconti
- Yusuke Watanabe +
- Warren Weckesser
- Phillip Weinberg +
- Nils Werner
- Jakub Wilk
- Josh Wilson
- wirew0rm +
- David Wolever +
- Nathan Woods
- ybeltukov +
- G Young
- Evgeny Zhurko +
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.
Files
scipy/scipy-v0.19.0.zip
Files
(13.1 MB)
Name | Size | Download all |
---|---|---|
md5:00b804640f846b1037a3c23dd72fc9de
|
13.1 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/scipy/scipy/tree/v0.19.0 (URL)