Skip to content

SciPy 1.1.0

Choose a tag to compare
@pv pv released this 05 May 18:21

SciPy 1.1.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. Before upgrading, we recommend that users check that
their own code does not use deprecated SciPy functionality (to do so,
run your code with python -Wd and check for DeprecationWarning s).
Our development attention will now shift to bug-fix releases on the
1.1.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

This release has improved but not necessarily 100% compatibility with
the PyPy Python implementation. For running on
PyPy, PyPy 6.0+ and Numpy 1.15.0+ are required.

New features

scipy.integrate improvements

The argument tfirst has been added to the function
scipy.integrate.odeint. This allows odeint to use the same user
functions as scipy.integrate.solve_ivp and scipy.integrate.ode without
the need for wrapping them in a function that swaps the first two

Error messages from quad() are now clearer.

scipy.linalg improvements

The function scipy.linalg.ldl has been added for factorization of
indefinite symmetric/hermitian matrices into triangular and block
diagonal matrices.

Python wrappers for LAPACK sygst, hegst added in

Added scipy.linalg.null_space, scipy.linalg.cdf2rdf,

scipy.misc improvements

An electrocardiogram has been added as an example dataset for a
one-dimensional signal. It can be accessed through

scipy.ndimage improvements

The routines scipy.ndimage.binary_opening, and
scipy.ndimage.binary_closing now support masks and different border

scipy.optimize improvements

The method trust-constr has been added to scipy.optimize.minimize. The
method switches between two implementations depending on the problem
definition. For equality constrained problems it is an implementation of
a trust-region sequential quadratic programming solver and, when
inequality constraints are imposed, it switches to a trust-region
interior point method. Both methods are appropriate for large scale
problems. Quasi-Newton options BFGS and SR1 were implemented and can be
used to approximate second order derivatives for this new method. Also,
finite-differences can be used to approximate either first-order or
second-order derivatives.

Random-to-Best/1/bin and Random-to-Best/1/exp mutation strategies were
added to scipy.optimize.differential_evolution as randtobest1bin and
randtobest1exp, respectively. Note: These names were already in use
but implemented a different mutation strategy. See Backwards
incompatible changes
, below. The
init keyword for the scipy.optimize.differential_evolution function
can now accept an array. This array allows the user to specify the
entire population.

Add an adaptive option to Nelder-Mead to use step parameters adapted
to the dimensionality of the problem.

Minor improvements in scipy.optimize.basinhopping.

scipy.signal improvements

Three new functions for peak finding in one-dimensional arrays were
added. scipy.signal.find_peaks searches for peaks (local maxima) based
on simple value comparison of neighbouring samples and returns those
peaks whose properties match optionally specified conditions for their
height, prominence, width, threshold and distance to each other.
scipy.signal.peak_prominences and scipy.signal.peak_widths can
directly calculate the prominences or widths of known peaks.

Added ZPK versions of frequency transformations:
scipy.signal.bilinear_zpk, scipy.signal.lp2bp_zpk,
scipy.signal.lp2bs_zpk, scipy.signal.lp2hp_zpk,


scipy.sparse improvements

Previously, the reshape method only worked on
scipy.sparse.lil_matrix, and in-place reshaping did not work on any
matrices. Both operations are now implemented for all matrices. Handling
of shapes has been made consistent with numpy.matrix throughout the
scipy.sparse module (shape can be a tuple or splatted, negative number
acts as placeholder, padding and unpadding dimensions of size 1 to
ensure length-2 shape).

scipy.special improvements

Added Owen's T function as scipy.special.owens_t.

Accuracy improvements in chndtr, digamma, gammaincinv, lambertw,

scipy.stats improvements

The Moyal distribution has been added as scipy.stats.moyal.

Added the normal inverse Gaussian distribution as

Deprecated features

The iterative linear equation solvers in scipy.sparse.linalg had a
sub-optimal way of how absolute tolerance is considered. The default
behavior will be changed in a future Scipy release to a more standard
and less surprising one. To silence deprecation warnings, set the
atol= parameter explicitly. is deprecated, replaced by

The window functions in scipy.signal are now available in They will remain also available in the old
location in the scipy.signal namespace in future Scipy versions.
However, importing them from is preferred, and new
window functions will be added only there.

Indexing sparse matrices with floating-point numbers instead of integers
is deprecated.

The function scipy.stats.itemfreq is deprecated.

Backwards incompatible changes

Previously, scipy.linalg.orth used a singular value cutoff value
appropriate for double precision numbers also for single-precision
input. The cutoff value is now tunable, and the default has been changed
to depend on the input data precision.

In previous versions of Scipy, the randtobest1bin and randtobest1exp
mutation strategies in scipy.optimize.differential_evolution were
actually implemented using the Current-to-Best/1/bin and
Current-to-Best/1/exp strategies, respectively. These strategies were
renamed to currenttobest1bin and currenttobest1exp and the
implementations of randtobest1bin and randtobest1exp strategies were

Functions in the ndimage module now always return their output array.
Before this most functions only returned the output array if it had been
allocated by the function, and would return None if it had been
provided by the user.

Distance metrics in scipy.spatial.distance now require non-negative

scipy.special.loggamma returns now real-valued result when the input is

Other changes

When building on Linux with GNU compilers, the .so Python extension
files now hide all symbols except those required by Python, which can
avoid problems when embedding the Python interpreter.


  • Saurabh Agarwal +
  • Diogo Aguiam +
  • Joseph Albert +
  • Gerrit Ansmann +
  • Jean-François B +
  • Vahan Babayan +
  • Alessandro Pietro Bardelli
  • Christoph Baumgarten +
  • Felix Berkenkamp
  • Lilian Besson +
  • Aditya Bharti +
  • Matthew Brett
  • Evgeni Burovski
  • CJ Carey
  • Martin Ø. Christensen +
  • Robert Cimrman
  • Vicky Close +
  • Peter Cock +
  • Philip DeBoer
  • Jaime Fernandez del Rio
  • Dieter Werthmüller +
  • Tom Donoghue +
  • Matt Dzugan +
  • Lars G +
  • Jacques Gaudin +
  • Andriy Gelman +
  • Sean Gillies +
  • Dezmond Goff
  • Christoph Gohlke
  • Ralf Gommers
  • Uri Goren +
  • Deepak Kumar Gouda +
  • Douglas Lessa Graciosa +
  • Matt Haberland
  • David Hagen
  • Charles Harris
  • Jordan Heemskerk +
  • Danny Hermes +
  • Stephan Hoyer +
  • Theodore Hu +
  • Jean-François B. +
  • Mads Jensen +
  • Jon Haitz Legarreta Gorroño +
  • Ben Jude +
  • Noel Kippers +
  • Julius Bier Kirkegaard +
  • Maria Knorps +
  • Mikkel Kristensen +
  • Eric Larson
  • Kasper Primdal Lauritzen +
  • Denis Laxalde
  • KangWon Lee +
  • Jan Lehky +
  • Jackie Leng +
  • P.L. Lim +
  • Nikolay Mayorov
  • Mihai Capotă +
  • Max Mikhaylov +
  • Mark Mikofski +
  • Jarrod Millman
  • Raden Muhammad +
  • Paul Nation
  • Andrew Nelson
  • Nico Schlömer
  • Joel Nothman
  • Kyle Oman +
  • Egor Panfilov +
  • Nick Papior
  • Anubhav Patel +
  • Oleksandr Pavlyk
  • Ilhan Polat
  • Robert Pollak +
  • Anant Prakash +
  • Aman Pratik
  • Sean Quinn +
  • Giftlin Rajaiah +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio H Ribeiro +
  • Antonio Horta Ribeiro
  • Benjamin Rose +
  • Fabian Rost
  • Divakar Roy +
  • Scott Sievert
  • Leo Singer
  • Sourav Singh
  • Martino Sorbaro +
  • Eric Stansifer +
  • Martin Thoma
  • Phil Tooley +
  • Piotr Uchwat +
  • Paul van Mulbregt
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Florian Weimer +
  • Eric Wieser
  • Josh Wilson
  • Ted Ying +
  • Evgeny Zhurko
  • Zé Vinícius
  • @Astrofysicus +
  • @awakenting +
  • @endolith
  • @FormerPhysicist +
  • @gaulinmp +
  • @hugovk
  • @ksemb +
  • @kshitij12345 +
  • @luzpaz +
  • @NKrvavica +
  • @rafalalgo +
  • @samyak0210 +
  • @soluwalana +
  • @sudheerachary +
  • @Tokixix +
  • @tttthomasssss +
  • @vkk800 +
  • @xoviat
  • @ziejcow +

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