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
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.
tfirst has been added to the function
scipy.integrate.odeint. This allows
odeint to use the same user
the need for wrapping them in a function that swaps the first two
Error messages from
quad() are now clearer.
scipy.linalg.ldl has been added for factorization of
indefinite symmetric/hermitian matrices into triangular and block
Python wrappers for LAPACK
hegst added in
An electrocardiogram has been added as an example dataset for a
one-dimensional signal. It can be accessed through
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
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
function can now accept an array. This array allows the user to specify
the entire population.
adaptive option to Nelder-Mead to use step parameters adapted
to the dimensionality of the problem.
Minor improvements in
Three new functions for peak finding in one-dimensional arrays were
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_widths can directly
calculate the prominences or widths of known peaks.
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).
Added Owen’s T function as
Accuracy improvements in
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.
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.
scipy.stats.itemfreq is deprecated.
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
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
currenttobest1exp and the implementations of
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
scipy.special.loggamma now returns real-valued result when the input