SciPy 0.11.0 is the culmination of 8 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. Highlights of this release are:
A new module has been added which provides a number of common sparse graph algorithms.
New unified interfaces to the existing optimization and root finding functions have been added.
All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. 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-3.2 and NumPy 1.5.1 or greater.
The new submodule
scipy.sparse.csgraph implements a number of efficient
graph algorithms for graphs stored as sparse adjacency matrices. Available
connected_components- determine connected components of a graph
laplacian- compute the laplacian of a graph
shortest_path- compute the shortest path between points on a positive graph
dijkstra- use Dijkstra’s algorithm for shortest path
floyd_warshall- use the Floyd-Warshall algorithm for shortest path
breadth_first_order- compute a breadth-first order of nodes
depth_first_order- compute a depth-first order of nodes
breadth_first_tree- construct the breadth-first tree from a given node
depth_first_tree- construct a depth-first tree from a given node
minimum_spanning_tree- construct the minimum spanning tree of a graph
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_bfgs and anneal) or constrained
For univariate functions,
scipy.optimize.minimize_scalar provides an
interface to methods for unconstrained and bounded optimization (
This allows for easier comparing and switching between solvers.
Solvers for the Sylvester equation (
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
These solvers are often used in the field of linear control theory.
It is now possible to calculate the QZ, or Generalized Schur, decomposition
scipy.linalg.qz. This function wraps the LAPACK routines sgges,
dgges, cgges, and zgges.
scipy.linalg.qr_multiply, which allows efficient computation
of the matrix product of Q (from a QR decomposition) and a vector, has been
A function for creating Pascal matrices,
scipy.linalg.pascal, was added.
Two new functions,
added to easily construct diagonal and block-diagonal sparse matrices
csr_matrix now support the operations
trunc. 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
For interpolation in spherical coordinates, the three classes
scipy.interpolate.RectSphereBivariateSpline have been added.
The stats module has gained functions to do binned statistics, which are a
generalization of histograms, in 1-D, 2-D and multiple dimensions:
scipy.sparse.cs_graph_components has been made a part of the sparse graph
submodule, and renamed to
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 xa and xb parameters for all distributions in
scipy.stats.distributions already weren’t used; they have now been
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 spline evaluation function now behaves similarly to
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
The behavior of the
y attribute of
complex_ode is changed.
Previously, it expressed the complex-valued solution in the form:
z = ode.y[::2] + 1j * ode.y[1::2]
Now, it is directly the complex-valued solution:
z = ode.y
scipy.stats.ttest_1samp have been changed so that 0 / 0 now returns NaN
instead of 1.
The SuperLU sources in
scipy.sparse.linalg have been updated to version 4.3
scipy.signal.bode, which calculates magnitude and phase data
for a continuous-time system, has been added.
The two-sample T-test
scipy.stats.ttest_ind gained an option to compare
samples with unequal variances, i.e. Welch’s T-test.
scipy.misc.logsumexp now takes an optional
axis keyword argument.