- New matrix equation solvers (
- Constructing sparse matrices
- New operations on sparse matrices
- LSMR iterative solver
- Discrete Sine Transform
- Pascal matrix function
- QZ Decomposition
- Sparse Graph Submodule
- Deprecated features
- Backwards incompatible changes
SciPy 0.11.0 is the culmination of XXX 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.11.x branch, and on adding new features on the master branch.
This release requires Python 2.4-2.7 or 3.1- and NumPy 1.X.X or greater.
The optimize module has received a lot of attention this release. In addition to added tests, documentation improvements, bug fixes and code clean-up, the following improvements were made:
- A unified interface to minimizers of univariate and multivariate functions has been added.
- A unified interface to root finding algorithms for multivariate functions has been added.
- The L-BFGS-B algorithm has been updated to version 3.0.
Two new functions
scipy.optimize.minimize_scalar were added to provide a common interface to minimizers of multivariate and univariate functions respectively. For multivariate functions,
scipy.optimize.minimize provides an interface to methods for unconstrained optimization (fmin, fmin_powell, fmin_cg, fmin_ncg, fmin_bfgs and anneal) or constrained optimization (fmin_l_bfgs_b, fmin_tnc, fmin_cobyla and fmin_slsqp). For univariate functions,
scipy.optimize.minimize_scalar provides an interface to methods for unconstrained and bounded optimization (brent, golden, fminbound). This allows for easier comparing and switching between solvers.
The new function
scipy.optimize.root provides a common interface to root finding algorithms for multivariate functions, embeding fsolve, leastsq and nonlin solvers.
Solvers for the Sylvester equation (
scipy.linalg.solve_sylvester, discrete and continuous Lyapunov equations (
scipy.linalg.solve_discrete_lyapunov) and discrete and continuous algebraic Riccati equations (
scipy.linalg.solve_discrete_are) have been added to
scipy.linalg. These solvers are often used in the field of linear control theory.
Two new functions,
scipy.sparse.block_diag, were added to easily construct diagonal and block-diagonal sparse matrices respectively.
csr_matrix now support the operations
Previously, these operations had to be performed by operating on the matrices'
LSMR, an iterative method for solving (sparse) linear and linear least-squares systems, was added as
Bindings for the discrete sine transform functions have been added to
A function for creating Pascal matrices,
scipy.linalg.pascal, was added.
misc.logsumexp now takes an optional
axis keyword argument.
It is now possible to calculate the QZ, or Generalized Schur, decomposition using scipy.linalg.qz. This function wraps the LAPACK routines sgges, dgges, cgges, and zgges.
The new submodule :mod:`scipy.sparse.csgraph` implements a number of efficient graph algorithms for graphs stored as sparse adjacency matrices. Available routines are:
- :func:`connected_components` - determine connected components of a graph
- :func:`laplacian` - compute the laplacian of a graph
- :func:`shortest_path` - compute the shortest path between points on a positive graph
- :func:`dijkstra` - use Dijkstra's algorithm for shortest path
- :func:`floyd_warshall` - use the Floyd-Warshall algorithm for shortest path
- :func:`breadth_first_order` - compute a breadth-first order of nodes
- :func:`depth_first_order` - compute a depth-first order of nodes
- :func:`breadth_first_tree` - construct the breadth-first tree from a given node
- :func:`depth_first_tree` - construct a depth-first tree from a given node
- :func:`minimum_spanning_tree` - construct the minimum spanning tree of a graph
For interpolation in spherical coordinates, the three classes
scipy.interpolate.RectSphereBivariateSpline have been added.
scipy.sparse.cs_graph_components has been made a part of the sparse graph submodule, and renamed to
scipy.sparse.csgraph.connected_components. Calling the former routine will result in a deprecation warning.
scipy.misc.radon has been deprecated. A more full-featured radon transform can be found in scikits-image.
scipy.io.save_as_module has been deprecated. A better way to save multiple Numpy arrays is the
The spline evaluation function now behaves similarly to
interp1d for size-1 arrays. Previous behavior:
>>> from scipy.interpolate import splev, splrep, interp1d >>> x = [1,2,3,4,5] >>> y = [4,5,6,7,8] >>> tck = splrep(x, y) >>> splev(, tck) 4. >>> splev(1, tck) 4.
>>> splev(, tck) array([ 4.]) >>> splev(1, tck) array(4.)
This affects also the
scipy.maxentropy module, which was deprecated in the 0.10.0 release, has been removed. Logistic regression in scikits.learn is a good and modern alternative for this functionality.
The SuperLU sources in
scipy.sparse.linalg have been updated to version 4.3
scipy.linalg.qr_multiply, which allows efficient computation
of the matrix product of Q (from a QR decompostion) and a vector, has been
scipy.signal.bode, which calculates magnitude and phase data
for a continuous-time system, has been added.
This release contains work by the following people (contributed at least one patch to this release, names in alphabetical order):
- Jeff Armstrong
- Chad Baker
- Brandon Beacher +
- behrisch +
- Matthew Brett
- Lars Buitinck
- Luis Pedro Coelho +
- Johann Cohen-Tanugi
- David Cournapeau
- dougal +
- endolith +
- Bjørn Forsman +
- Robert Gantner +
- Sebastian Gassner +
- Christoph Gohlke
- Ralf Gommers
- Yaroslav Halchenko
- Charles Harris
- Jonathan Helmus +
- Andreas Hilboll +
- Marc Honnorat +
- Jonathan Hunt +
- Maxim Ivanov +
- Christopher Kuster +
- Denis Laxalde +
- lmwang +
- Travis Oliphant
- Joonas Paalasmaa +
- Fabian Pedregosa
- Josef Perktold
- Jim Radford +
- Andrew Schein +
- Skipper Seabold
- Jacob Silterra +
- Scott Sinclair
- Alexis Tabary +
- Martin Teichmann
- Matt Terry +
- Nicky van Foreest +
- Jacob Vanderplas
- Patrick Varilly +
- Pauli Virtanen
- Nils Wagner +
- Darryl Wally +
- Stefan van der Walt
- David Warde-Farley +
- Warren Weckesser
- Sebastian Werk +
- Mike Wimmer +
- Tony S Yu +
A total of 50 people contributed to this release. People with a "+" by their names contributed a patch for the first time.