Skip to content


Choose a tag to compare
@rgommers rgommers released this 24 Jul 19:24

SciPy 0.16.0 Release Notes

SciPy 0.16.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.16.x branch, and on adding
new features on the master branch.

This release requires Python 2.6, 2.7 or 3.2-3.4 and NumPy 1.6.2 or greater.

Highlights of this release include:

  • A Cython API for BLAS/LAPACK in scipy.linalg
  • A new benchmark suite. It's now straightforward to add new benchmarks, and
    they're routinely included with performance enhancement PRs.
  • Support for the second order sections (SOS) format in scipy.signal.

New features

Benchmark suite

The benchmark suite has switched to using Airspeed Velocity <>__ for benchmarking. You can
run the suite locally via python --bench. For more
details, see benchmarks/README.rst.

scipy.linalg improvements

A full set of Cython wrappers for BLAS and LAPACK has been added in the
modules scipy.linalg.cython_blas and scipy.linalg.cython_lapack.
In Cython, these wrappers can now be cimported from their corresponding
modules and used without linking directly against BLAS or LAPACK.

The functions scipy.linalg.qr_delete, scipy.linalg.qr_insert and
scipy.linalg.qr_update for updating QR decompositions were added.

The function scipy.linalg.solve_circulant solves a linear system with
a circulant coefficient matrix.

The function scipy.linalg.invpascal computes the inverse of a Pascal matrix.

The function scipy.linalg.solve_toeplitz, a Levinson-Durbin Toeplitz solver,
was added.

Added wrapper for potentially useful LAPACK function *lasd4. It computes
the square root of the i-th updated eigenvalue of a positive symmetric rank-one
modification to a positive diagonal matrix. See its LAPACK documentation and
unit tests for it to get more info.

Added two extra wrappers for LAPACK least-square solvers. Namely, they are
*gelsd and *gelsy.

Wrappers for the LAPACK *lange functions, which calculate various matrix
norms, were added.

Wrappers for *gtsv and *ptsv, which solve A*X = B for tri-diagonal
matrix A, were added.

scipy.signal improvements

Support for second order sections (SOS) as a format for IIR filters
was added. The new functions are:

  • scipy.signal.sosfilt
  • scipy.signal.sosfilt_zi,
  • scipy.signal.sos2tf
  • scipy.signal.sos2zpk
  • scipy.signal.tf2sos
  • scipy.signal.zpk2sos.

Additionally, the filter design functions iirdesign, iirfilter, butter,
cheby1, cheby2, ellip, and bessel can return the filter in the SOS

The function scipy.signal.place_poles, which provides two methods to place
poles for linear systems, was added.

The option to use Gustafsson's method for choosing the initial conditions
of the forward and backward passes was added to scipy.signal.filtfilt.

New classes TransferFunction, StateSpace and ZerosPolesGain were
added. These classes are now returned when instantiating scipy.signal.lti.
Conversion between those classes can be done explicitly now.

An exponential (Poisson) window was added as scipy.signal.exponential, and a
Tukey window was added as scipy.signal.tukey.

The function for computing digital filter group delay was added as

The functionality for spectral analysis and spectral density estimation has
been significantly improved: scipy.signal.welch became ~8x faster and the
functions scipy.signal.spectrogram, scipy.signal.coherence and
scipy.signal.csd (cross-spectral density) were added.

scipy.signal.lsim was rewritten - all known issues are fixed, so this
function can now be used instead of lsim2; lsim is orders of magnitude
faster than lsim2 in most cases.

scipy.sparse improvements

The function scipy.sparse.norm, which computes sparse matrix norms, was

The function scipy.sparse.random, which allows to draw random variates from
an arbitrary distribution, was added.

scipy.spatial improvements

scipy.spatial.cKDTree has seen a major rewrite, which improved the
performance of the query method significantly, added support for parallel
queries, pickling, and options that affect the tree layout. See pull request
4374 for more details.

The function scipy.spatial.procrustes for Procrustes analysis (statistical
shape analysis) was added.

scipy.stats improvements

The Wishart distribution and its inverse have been added, as
scipy.stats.wishart and scipy.stats.invwishart.

The Exponentially Modified Normal distribution has been
added as scipy.stats.exponnorm.

The Generalized Normal distribution has been added as scipy.stats.gennorm.

All distributions now contain a random_state property and allow specifying a
specific numpy.random.RandomState random number generator when generating
random variates.

Many statistical tests and other scipy.stats functions that have multiple
return values now return namedtuples. See pull request 4709 for details.

scipy.optimize improvements

A new derivative-free method DF-SANE has been added to the nonlinear equation
system solving function scipy.optimize.root.

Deprecated features

scipy.stats.pdf_fromgamma is deprecated. This function was undocumented,
untested and rarely used. Statsmodels provides equivalent functionality
with statsmodels.distributions.ExpandedNormal.

scipy.stats.fastsort is deprecated. This function is unnecessary,
numpy.argsort can be used instead.

scipy.stats.signaltonoise and scipy.stats.mstats.signaltonoise are
deprecated. These functions did not belong in scipy.stats and are rarely
used. See issue #609 for details.

scipy.stats.histogram2 is deprecated. This function is unnecessary,
numpy.histogram2d can be used instead.

Backwards incompatible changes

The deprecated global optimizer scipy.optimize.anneal was removed.

The following deprecated modules have been removed: scipy.lib.blas,
scipy.lib.lapack, scipy.linalg.cblas, scipy.linalg.fblas,
scipy.linalg.clapack, scipy.linalg.flapack. They had been deprecated
since Scipy 0.12.0, the functionality should be accessed as scipy.linalg.blas
and scipy.linalg.lapack.

The deprecated function scipy.special.all_mat has been removed.

The deprecated functions fprob, ksprob, zprob, randwcdf
and randwppf have been removed from scipy.stats.

Other changes

The version numbering for development builds has been updated to comply with PEP 440.

Building with python develop is now supported.


  • @Axiru +
  • @endolith
  • Elliott Sales de Andrade +
  • Anne Archibald
  • Yoshiki Vázquez Baeza +
  • Sylvain Bellemare
  • Felix Berkenkamp +
  • Raoul Bourquin +
  • Matthew Brett
  • Per Brodtkorb
  • Christian Brueffer
  • Lars Buitinck
  • Evgeni Burovski
  • Steven Byrnes
  • CJ Carey
  • George Castillo +
  • Alex Conley +
  • Liam Damewood +
  • Rupak Das +
  • Abraham Escalante +
  • Matthias Feurer +
  • Eric Firing +
  • Clark Fitzgerald
  • Chad Fulton
  • André Gaul
  • Andreea Georgescu +
  • Christoph Gohlke
  • Andrey Golovizin +
  • Ralf Gommers
  • J.J. Green +
  • Alex Griffing
  • Alexander Grigorievskiy +
  • Hans Moritz Gunther +
  • Jonas Hahnfeld +
  • Charles Harris
  • Ian Henriksen
  • Andreas Hilboll
  • Åsmund Hjulstad +
  • Jan Schlüter +
  • Janko Slavič +
  • Daniel Jensen +
  • Johannes Ballé +
  • Terry Jones +
  • Amato Kasahara +
  • Eric Larson
  • Denis Laxalde
  • Antony Lee
  • Gregory R. Lee
  • Perry Lee +
  • Loïc Estève
  • Martin Manns +
  • Eric Martin +
  • Matěj Kocián +
  • Andreas Mayer +
  • Nikolay Mayorov +
  • Robert McGibbon +
  • Sturla Molden
  • Nicola Montecchio +
  • Eric Moore
  • Jamie Morton +
  • Nikolas Moya +
  • Maniteja Nandana +
  • Andrew Nelson
  • Joel Nothman
  • Aldrian Obaja
  • Regina Ongowarsito +
  • Paul Ortyl +
  • Pedro López-Adeva Fernández-Layos +
  • Stefan Peterson +
  • Irvin Probst +
  • Eric Quintero +
  • John David Reaver +
  • Juha Remes +
  • Thomas Robitaille
  • Clancy Rowley +
  • Tobias Schmidt +
  • Skipper Seabold
  • Aman Singh +
  • Eric Soroos
  • Valentine Svensson +
  • Julian Taylor
  • Aman Thakral +
  • Helmut Toplitzer +
  • Fukumu Tsutsumi +
  • Anastasiia Tsyplia +
  • Jacob Vanderplas
  • Pauli Virtanen
  • Matteo Visconti +
  • Warren Weckesser
  • Florian Wilhelm +
  • Nathan Woods
  • Haochen Wu +
  • Daan Wynen +

A total of 93 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.