SciPy 1.1.0 Release Notes#
Contents
-
-
scipy.integrate
improvementsscipy.linalg
improvementsscipy.misc
improvementsscipy.ndimage
improvementsscipy.optimize
improvementsscipy.signal
improvementsscipy.sparse
improvementsscipy.special
improvementsscipy.stats
improvements
-
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% compatible 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
arguments.
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
scipy.linalg.lapack
.
Added scipy.linalg.null_space
, scipy.linalg.cdf2rdf
,
scipy.linalg.rsf2csf
.
scipy.misc
improvements#
An electrocardiogram has been added as an example dataset for a
one-dimensional signal. It can be accessed through
scipy.misc.electrocardiogram
.
scipy.ndimage
improvements#
The routines scipy.ndimage.binary_opening
, and
scipy.ndimage.binary_closing
now support masks and different border
values.
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.
Added 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 neighboring 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.signal.lp2lp_zpk
.
Added scipy.signal.windows.dpss
,
scipy.signal.windows.general_cosine
and
scipy.signal.windows.general_hamming
.
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
, zetac
.
scipy.stats
improvements#
The Moyal distribution has been added as scipy.stats.moyal
.
Added the normal inverse Gaussian distribution as
scipy.stats.norminvgauss
.
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.
scipy.signal.windows.slepian is deprecated, replaced by
scipy.signal.windows.dpss
.
The window functions in scipy.signal
are now available in
scipy.signal.windows
. They will remain also available in the old
location in the scipy.signal
namespace in future Scipy versions.
However, importing them from scipy.signal.windows
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 corrected.
Functions in the ndimage module now always return their output array.
Before, 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
weights.
scipy.special.loggamma
now returns real-valued result when the input
is real-valued.
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.