SciPy 0.14.0 Release Notes#
SciPy 0.14.0 is the culmination of 8 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.14.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.5.1 or greater.
New features#
scipy.interpolate
improvements#
A new wrapper function scipy.interpolate.interpn
for interpolation on regular
grids has been added. interpn supports linear and nearest-neighbor
interpolation in arbitrary dimensions and spline interpolation in two
dimensions.
Faster implementations of piecewise polynomials in power and Bernstein
polynomial bases have been added as scipy.interpolate.PPoly
and
scipy.interpolate.BPoly
. New users should use these in favor of
scipy.interpolate.PiecewisePolynomial.
scipy.interpolate.interp1d
now accepts non-monotonic inputs and sorts them.
If performance is critical, sorting can be turned off by using the new
assume_sorted
keyword.
Functionality for evaluation of bivariate spline derivatives in
scipy.interpolate
has been added.
The new class scipy.interpolate.Akima1DInterpolator
implements the piecewise
cubic polynomial interpolation scheme devised by H. Akima.
Functionality for fast interpolation on regular, unevenly spaced grids
in arbitrary dimensions has been added as
scipy.interpolate.RegularGridInterpolator
.
scipy.linalg
improvements#
The new function scipy.linalg.dft
computes the matrix of the
discrete Fourier transform.
A condition number estimation function for matrix exponential,
scipy.linalg.expm_cond
, has been added.
scipy.optimize
improvements#
A set of benchmarks for optimize, which can be run with optimize.bench()
,
has been added.
scipy.optimize.curve_fit
now has more controllable error estimation via the
absolute_sigma
keyword.
Support for passing custom minimization methods to optimize.minimize()
and optimize.minimize_scalar()
has been added, currently useful especially
for combining optimize.basinhopping()
with custom local optimizer routines.
scipy.stats
improvements#
A new class scipy.stats.multivariate_normal
with functionality for
multivariate normal random variables has been added.
A lot of work on the scipy.stats
distribution framework has been done.
Moment calculations (skew and kurtosis mainly) are fixed and verified, all
examples are now runnable, and many small accuracy and performance improvements
for individual distributions were merged.
The new function scipy.stats.anderson_ksamp
computes the k-sample
Anderson-Darling test for the null hypothesis that k samples come from
the same parent population.
scipy.signal
improvements#
scipy.signal.iirfilter
and related functions to design Butterworth,
Chebyshev, elliptical and Bessel IIR filters now all use pole-zero (“zpk”)
format internally instead of using transformations to numerator/denominator
format. The accuracy of the produced filters, especially high-order ones, is
improved significantly as a result.
The Savitzky-Golay filter was added with the new functions
scipy.signal.savgol_filter
and scipy.signal.savgol_coeffs
.
The new function scipy.signal.vectorstrength
computes the vector strength,
a measure of phase synchrony, of a set of events.
scipy.special
improvements#
The functions scipy.special.boxcox
and scipy.special.boxcox1p
, which
compute the Box-Cox transformation, have been added.
scipy.sparse
improvements#
Significant performance improvement in CSR, CSC, and DOK indexing speed.
When using Numpy >= 1.9 (to be released in MM 2014), sparse matrices function correctly when given to arguments of
np.dot
,np.multiply
and other ufuncs. With earlier Numpy and Scipy versions, the results of such operations are undefined and usually unexpected.Sparse matrices are no longer limited to
2^31
nonzero elements. They automatically switch to using 64-bit index data type for matrices containing more elements. User code written assuming the sparse matrices use int32 as the index data type will continue to work, except for such large matrices. Code dealing with larger matrices needs to accept either int32 or int64 indices.
Deprecated features#
anneal
#
The global minimization function scipy.optimize.anneal is deprecated.
All users should use the scipy.optimize.basinhopping
function instead.
scipy.stats
#
randwcdf
and randwppf
functions are deprecated. All users should use
distribution-specific rvs
methods instead.
Probability calculation aliases zprob
, fprob
and ksprob
are
deprecated. Use instead the sf
methods of the corresponding distributions
or the special
functions directly.
scipy.interpolate
#
PiecewisePolynomial
class is deprecated.
Backwards incompatible changes#
scipy.special.lpmn#
lpmn
no longer accepts complex-valued arguments. A new function
clpmn
with uniform complex analytic behavior has been added, and
it should be used instead.
scipy.sparse.linalg#
Eigenvectors in the case of generalized eigenvalue problem are normalized to unit vectors in 2-norm, rather than following the LAPACK normalization convention.
The deprecated UMFPACK wrapper in scipy.sparse.linalg
has been removed due
to license and install issues. If available, scikits.umfpack
is still used
transparently in the spsolve
and factorized
functions. Otherwise,
SuperLU is used instead in these functions.
scipy.stats#
The deprecated functions glm
, oneway
and cmedian
have been removed
from scipy.stats
.
stats.scoreatpercentile
now returns an array instead of a list of
percentiles.
scipy.interpolate#
The API for computing derivatives of a monotone piecewise interpolation has
changed: if p is a PchipInterpolator
object, p.derivative(der)
returns a callable object representing the derivative of p. For in-place
derivatives use the second argument of the __call__ method:
p(0.1, der=2) evaluates the second derivative of p at x=0.1.
The method p.derivatives has been removed.