# SciPy 0.18.0 Release Notes

Contents

- SciPy 0.18.0 Release Notes

  - New features

    - `scipy.integrate` improvements

    - `scipy.interpolate` improvements

    - `scipy.fftpack` improvements

    - `scipy.signal` improvements

      - Discrete-time linear systems

    - `scipy.sparse` improvements

    - `scipy.optimize` improvements

    - `scipy.stats` improvements

      - Random matrices

    - `scipy.linalg` improvements

    - `scipy.spatial` improvements

    - `scipy.cluster` improvements

    - `scipy.special` improvements

  - Deprecated features

  - Backwards incompatible changes

    - `scipy.optimize`

    - `scipy.ndimage`

    - `scipy.stats`

    - `scipy.io`

    - `scipy.interpolate`

  - Other changes

  - Authors

    - Issues closed for 0.18.0

    - Pull requests for 0.18.0

SciPy 0.18.0 is the culmination of 6 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.19.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4-3.5 and NumPy 1.7.1 or greater.

Highlights of this release include:

- A new ODE solver for two-point boundary value problems, scipy.optimize.solve_bvp.

- A new class, CubicSpline, for cubic spline interpolation of data.

- N-dimensional tensor product polynomials, `scipy.interpolate.NdPPoly`.

- Spherical Voronoi diagrams, `scipy.spatial.SphericalVoronoi`.

- Support for discrete-time linear systems, `scipy.signal.dlti`.

## New features

### `scipy.integrate` improvements

A solver of two-point boundary value problems for ODE systems has been implemented in `scipy.integrate.solve_bvp`. The solver allows for non-separated boundary conditions, unknown parameters and certain singular terms. It finds a C1 continious solution using a fourth-order collocation algorithm.

### `scipy.interpolate` improvements

Cubic spline interpolation is now available via `scipy.interpolate.CubicSpline`. This class represents a piecewise cubic polynomial passing through given points and C2 continuous. It is represented in the standard polynomial basis on each segment.

A representation of n-dimensional tensor product piecewise polynomials is available as the `scipy.interpolate.NdPPoly` class.

Univariate piecewise polynomial classes, PPoly and Bpoly, can now be evaluated on periodic domains. Use `extrapolate="periodic"` keyword argument for this.

### `scipy.fftpack` improvements

`scipy.fftpack.next_fast_len` function computes the next “regular” number for FFTPACK. Padding the input to this length can give significant performance increase for `scipy.fftpack.fft`.

### `scipy.signal` improvements

Resampling using polyphase filtering has been implemented in the function `scipy.signal.resample_poly`. This method upsamples a signal, applies a zero-phase low-pass FIR filter, and downsamples using `scipy.signal.upfirdn` (which is also new in 0.18.0). This method can be faster than FFT-based filtering provided by `scipy.signal.resample` for some signals.

`scipy.signal.firls`, which constructs FIR filters using least-squares error minimization, was added.

`scipy.signal.sosfiltfilt`, which does forward-backward filtering like `scipy.signal.filtfilt` but for second-order sections, was added.

#### Discrete-time linear systems

`scipy.signal.dlti` provides an implementation of discrete-time linear systems. Accordingly, the StateSpace, TransferFunction and ZerosPolesGain classes have learned a the new keyword, dt, which can be used to create discrete-time instances of the corresponding system representation.

### `scipy.sparse` improvements

The functions sum, max, mean, min, transpose, and reshape in `scipy.sparse` have had their signatures augmented with additional arguments and functionality so as to improve compatibility with analogously defined functions in `numpy`.

Sparse matrices now have a count_nonzero method, which counts the number of nonzero elements in the matrix. Unlike getnnz() and `nnz` property, which return the number of stored entries (the length of the data attribute), this method counts the actual number of non-zero entries in data.

### `scipy.optimize` improvements

The implementation of Nelder-Mead minimization, scipy.minimize(…, method=”Nelder-Mead”), obtained a new keyword, initial_simplex, which can be used to specify the initial simplex for the optimization process.

Initial step size selection in CG and BFGS minimizers has been improved. We expect that this change will improve numeric stability of optimization in some cases. See pull request gh-5536 for details.

Handling of infinite bounds in SLSQP optimization has been improved. We expect that this change will improve numeric stability of optimization in the some cases. See pull request gh-6024 for details.

A large suite of global optimization benchmarks has been added to `scipy/benchmarks/go_benchmark_functions`. See pull request gh-4191 for details.

Nelder-Mead and Powell minimization will now only set defaults for maximum iterations or function evaluations if neither limit is set by the caller. In some cases with a slow converging function and only 1 limit set, the minimization may continue for longer than with previous versions and so is more likely to reach convergence. See issue gh-5966.

### `scipy.stats` improvements

Trapezoidal distribution has been implemented as `scipy.stats.trapz`. Skew normal distribution has been implemented as `scipy.stats.skewnorm`. Burr type XII distribution has been implemented as `scipy.stats.burr12`. Three- and four-parameter kappa distributions have been implemented as `scipy.stats.kappa3` and `scipy.stats.kappa4`, respectively.

New `scipy.stats.iqr` function computes the interquartile region of a distribution.

#### Random matrices

`scipy.stats.special_ortho_group` and `scipy.stats.ortho_group` provide generators of random matrices in the SO(N) and O(N) groups, respectively. They generate matrices in the Haar distribution, the only uniform distribution on these group manifolds.

`scipy.stats.random_correlation` provides a generator for random correlation matrices, given specified eigenvalues.

### `scipy.linalg` improvements

`scipy.linalg.svd` gained a new keyword argument, `lapack_driver`. Available drivers are `gesdd` (default) and `gesvd`.

`scipy.linalg.lapack.ilaver` returns the version of the LAPACK library SciPy links to.

### `scipy.spatial` improvements

Boolean distances, scipy.spatial.pdist, have been sped up. Improvements vary by the function and the input size. In many cases, one can expect a speed-up of x2–x10.

New class `scipy.spatial.SphericalVoronoi` constructs Voronoi diagrams on the surface of a sphere. See pull request gh-5232 for details.

### `scipy.cluster` improvements

A new clustering algorithm, the nearest neighbor chain algorithm, has been implemented for `scipy.cluster.hierarchy.linkage`. As a result, one can expect a significant algorithmic improvement (\(O(N^2)\) instead of \(O(N^3)\)) for several linkage methods.

### `scipy.special` improvements

The new function `scipy.special.loggamma` computes the principal branch of the logarithm of the Gamma function. For real input, `loggamma` is compatible with `scipy.special.gammaln`. For complex input, it has more consistent behavior in the complex plane and should be preferred over `gammaln`.

Vectorized forms of spherical Bessel functions have been implemented as `scipy.special.spherical_jn`, `scipy.special.spherical_kn`, `scipy.special.spherical_in` and `scipy.special.spherical_yn`. They are recommended for use over `sph_*` functions, which are now deprecated.

Several special functions have been extended to the complex domain and/or have seen domain/stability improvements. This includes spence, digamma, log1p and several others.

## Deprecated features

The cross-class properties of lti systems have been deprecated. The following properties/setters will raise a DeprecationWarning:

Name - (accessing/setting raises warning) - (setting raises warning) * StateSpace - (num, den, gain) - (zeros, poles) * TransferFunction (A, B, C, D, gain) - (zeros, poles) * ZerosPolesGain (A, B, C, D, num, den) - ()

Spherical Bessel functions, `sph_in`, `sph_jn`, `sph_kn`, `sph_yn`, `sph_jnyn` and `sph_inkn` have been deprecated in favor of `scipy.special.spherical_jn` and `spherical_kn`, `spherical_yn`, `spherical_in`.

The following functions in `scipy.constants` are deprecated: `C2K`, `K2C`, `C2F`, `F2C`, `F2K` and `K2F`. They are superceded by a new function `scipy.constants.convert_temperature` that can perform all those conversions plus to/from the Rankine temperature scale.

## Backwards incompatible changes

### `scipy.optimize`

The convergence criterion for `optimize.bisect`, `optimize.brentq`, `optimize.brenth`, and `optimize.ridder` now works the same as `numpy.allclose`.

### `scipy.ndimage`

The offset in `ndimage.iterpolation.affine_transform` is now consistently added after the matrix is applied, independent of if the matrix is specified using a one-dimensional or a two-dimensional array.

### `scipy.stats`

`stats.ks_2samp` used to return nonsensical values if the input was not real or contained nans. It now raises an exception for such inputs.

Several deprecated methods of `scipy.stats` distributions have been removed: `est_loc_scale`, `vecfunc`, `veccdf` and `vec_generic_moment`.

Deprecated functions `nanmean`, `nanstd` and `nanmedian` have been removed from `scipy.stats`. These functions were deprecated in scipy 0.15.0 in favor of their `numpy` equivalents.

A bug in the `rvs()` method of the distributions in `scipy.stats` has been fixed. When arguments to `rvs()` were given that were shaped for broadcasting, in many cases the returned random samples were not random. A simple example of the problem is `stats.norm.rvs(loc=np.zeros(10))`. Because of the bug, that call would return 10 identical values. The bug only affected code that relied on the broadcasting of the shape, location and scale parameters.

The `rvs()` method also accepted some arguments that it should not have. There is a potential for backwards incompatibility in cases where `rvs()` accepted arguments that are not, in fact, compatible with broadcasting. An example is

> stats.gamma.rvs([2, 5, 10, 15], size=(2,2))

The shape of the first argument is not compatible with the requested size, but the function still returned an array with shape (2, 2). In scipy 0.18, that call generates a `ValueError`.

### `scipy.io`

`scipy.io.netcdf` masking now gives precedence to the `_FillValue` attribute over the `missing_value` attribute, if both are given. Also, data are only treated as missing if they match one of these attributes exactly: values that differ by roundoff from `_FillValue` or `missing_value` are no longer treated as missing values.

### `scipy.interpolate`

scipy.interpolate.PiecewisePolynomial class has been removed. It has been deprecated in scipy 0.14.0, and `scipy.interpolate.BPoly.from_derivatives` serves as a drop-in replacement.

## Other changes

Scipy now uses `setuptools` for its builds instead of plain distutils. This fixes usage of `install_requires='scipy'` in the `setup.py` files of projects that depend on Scipy (see Numpy issue gh-6551 for details). It potentially affects the way that build/install methods for Scipy itself behave though. Please report any unexpected behavior on the Scipy issue tracker.

PR #6240 changes the interpretation of the maxfun option in L-BFGS-B based routines in the `scipy.optimize` module. An L-BFGS-B search consists of multiple iterations, with each iteration consisting of one or more function evaluations. Whereas the old search strategy terminated immediately upon reaching maxfun function evaluations, the new strategy allows the current iteration to finish despite reaching maxfun.

The bundled copy of Qhull in the `scipy.spatial` subpackage has been upgraded to version 2015.2.

The bundled copy of ARPACK in the `scipy.sparse.linalg` subpackage has been upgraded to arpack-ng 3.3.0.

The bundled copy of SuperLU in the `scipy.sparse` subpackage has been upgraded to version 5.1.1.

## Authors

- @endolith

- @yanxun827 +

- @kleskjr +

- @MYheavyGo +

- @solarjoe +

- Gregory Allen +

- Gilles Aouizerate +

- Tom Augspurger +

- Henrik Bengtsson +

- Felix Berkenkamp

- Per Brodtkorb

- Lars Buitinck

- Daniel Bunting +

- Evgeni Burovski

- CJ Carey

- Tim Cera

- Grey Christoforo +

- Robert Cimrman

- Philip DeBoer +

- Yves Delley +

- Dávid Bodnár +

- Ion Elberdin +

- Gabriele Farina +

- Yu Feng

- Andrew Fowlie +

- Joseph Fox-Rabinovitz

- Simon Gibbons +

- Neil Girdhar +

- Kolja Glogowski +

- Christoph Gohlke

- Ralf Gommers

- Todd Goodall +

- Johnnie Gray +

- Alex Griffing

- Olivier Grisel

- Thomas Haslwanter +

- Michael Hirsch +

- Derek Homeier

- Golnaz Irannejad +

- Marek Jacob +

- InSuk Joung +

- Tetsuo Koyama +

- Eugene Krokhalev +

- Eric Larson

- Denis Laxalde

- Antony Lee

- Jerry Li +

- Henry Lin +

- Nelson Liu +

- Loïc Estève

- Lei Ma +

- Osvaldo Martin +

- Stefano Martina +

- Nikolay Mayorov

- Matthieu Melot +

- Sturla Molden

- Eric Moore

- Alistair Muldal +

- Maniteja Nandana

- Tavi Nathanson +

- Andrew Nelson

- Joel Nothman

- Behzad Nouri

- Nikolai Nowaczyk +

- Juan Nunez-Iglesias +

- Ted Pudlik

- Eric Quintero

- Yoav Ram

- Jonas Rauber +

- Tyler Reddy +

- Juha Remes

- Garrett Reynolds +

- Ariel Rokem +

- Fabian Rost +

- Bill Sacks +

- Jona Sassenhagen +

- Kari Schoonbee +

- Marcello Seri +

- Sourav Singh +

- Martin Spacek +

- Søren Fuglede Jørgensen +

- Bhavika Tekwani +

- Martin Thoma +

- Sam Tygier +

- Meet Udeshi +

- Utkarsh Upadhyay

- Bram Vandekerckhove +

- Sebastián Vanrell +

- Ze Vinicius +

- Pauli Virtanen

- Stefan van der Walt

- Warren Weckesser

- Jakub Wilk +

- Josh Wilson

- Phillip J. Wolfram +

- Nathan Woods

- Haochen Wu

- G Young +

A total of 99 people contributed to this release. People with a “+” by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

### Issues closed for 0.18.0

- #1484: SVD using `*GESVD` lapack drivers (Trac #957)

- #1547: Inconsistent use of offset in ndimage.interpolation.affine_transform()…

- #1609: special.hyp0f1 returns nan (Trac #1082)

- #1656: fmin_slsqp enhancement (Trac #1129)

- #2069: stats broadcasting in rvs (Trac #1544)

- #2165: sph_jn returns false results for some orders/values (Trac #1640)

- #2255: Incorrect order of translation and rotation in affine_transform…

- #2332: hyp0f1 args and return values are unnumpyic (Trac #1813)

- #2534: The sparse .sum() method with uint8 dtype does not act like the…

- #3113: Implement ufuncs for CSPHJY, SPHJ, SPHY, CSPHIK, SPHI, SPHIK…

- #3568: SciPy 0.13.3 - CentOS5 - Errors in test_arpack

- #3581: optimize: stepsize in fmin_bfgs is “bad”

- #4476: scipy.sparse non-native endian bug

- #4484: ftol in optimize.fmin fails to work

- #4510: sparsetools.cxx call_thunk can segfault due to out of bounds…

- #5051: ftol and xtol for _minimize_neldermead are absolute instead of…

- #5097: proposal: spherical Voronoi diagrams

- #5123: Call to `scipy.sparse.coo_matrix` fails when passed Cython typed…

- #5220: scipy.cluster.hierarchy.{ward,median,centroid} does not work…

- #5379: Add a build step at the end of .travis.yml that uploads working…

- #5440: scipy.optimize.basinhopping: accept_test returning `numpy.bool_`…

- #5452: Error in scipy.integrate.nquad when using variable integration…

- #5520: Cannot inherit csr_matrix properly

- #5533: Kendall tau implementation uses Python mergesort

- #5553: stats.tiecorrect overflows

- #5589: Add the Type XII Burr distribution to stats.

- #5612: sparse.linalg factorizations slow for small k due to default…

- #5626: io.netcdf masking should use masked_equal rather than masked_value

- #5637: Simple cubic spline interpolation?

- #5683: BUG: Akima1DInterpolator may return nans given multidimensional…

- #5686: scipy.stats.ttest_ind_from_stats does not accept arrays

- #5702: scipy.ndimage.interpolation.affine_transform lacks documentation…

- #5718: Wrong computation of weighted minkowski distance in cdist

- #5745: move to setuptools for next release

- #5752: DOC: solve_discrete_lyapunov equation puts transpose in wrong…

- #5760: signal.ss2tf doesn’t handle zero-order state-space models

- #5764: Hypergeometric function hyp0f1 behaves incorrectly for complex…

- #5814: stats NaN Policy Error message inconsistent with code

- #5833: docstring of stats.binom_test() needs an update

- #5853: Error in scipy.linalg.expm for complex matrix with shape (1,1)

- #5856: Specify Nelder-Mead initial simplex

- #5865: scipy.linalg.expm fails for certain numpy matrices

- #5915: optimize.basinhopping - variable referenced before assignment.

- #5916: LSQUnivariateSpline fitting failed with knots generated from…

- #5927: unicode vs. string comparison in scipy.stats.binned_statistic_dd

- #5936: faster implementation of ks_2samp

- #5948: csc matrix .mean returns single element matrix rather than scalar

- #5959: BUG: optimize test error for root when using lgmres

- #5972: Test failures for sparse sum tests on 32-bit Python

- #5976: Unexpected exception in scipy.sparse.bmat while using 0 x 0 matrix

- #6008: scipy.special.kl_div not available in 0.14.1

- #6011: The von-Mises entropy is broken

- #6016: python crashes for linalg.interpolative.svd with certain large…

- #6017: Wilcoxon signed-rank test with zero_method=”pratt” or “zsplit”…

- #6028: stats.distributions does not have trapezoidal distribution

- #6035: Wrong link in f_oneway

- #6056: BUG: signal.decimate should only accept discrete LTI objects

- #6093: Precision error on Linux 32 bit with openblas

- #6101: Barycentric transforms test error on Python3, 32-bit Linux

- #6105: scipy.misc.face docstring is incorrect

- #6113: scipy.linalg.logm fails for a trivial matrix

- #6128: Error in dot method of sparse COO array, when used with numpy…

- #6132: Failures with latest MKL

- #6136: Failures on master with MKL

- #6162: fmin_l_bfgs_b returns inconsistent results (fmin ≠ f(xmin)) and…

- #6165: optimize.minimize infinite loop with Newton-CG

- #6167: incorrect distribution fitting for data containing boundary values.

- #6194: lstsq() and others detect numpy.complex256 as real

- #6216: ENH: improve accuracy of ppf cdf roundtrip for bradford

- #6217: BUG: weibull_min.logpdf return nan for c=1 and x=0

- #6218: Is there a method to cap shortest path search distances?

- #6222: PchipInterpolator no longer handles a 2-element array

- #6226: ENH: improve accuracy for logistic.ppf and logistic.isf

- #6227: ENH: improve accuracy for rayleigh.logpdf and rayleigh.logsf…

- #6228: ENH: improve accuracy of ppf cdf roundtrip for gumbel_l

- #6235: BUG: alpha.pdf and alpha.logpdf returns nan for x=0

- #6245: ENH: improve accuracy for ppf-cdf and sf-isf roundtrips for invgamma

- #6263: BUG: stats: Inconsistency in the multivariate_normal docstring

- #6292: Python 3 unorderable type errors in test_sparsetools.TestInt32Overflow

- #6316: TestCloughTocher2DInterpolator.test_dense crashes python3.5.2rc1_64bit…

- #6318: Scipy interp1d ‘nearest’ not working for high values on x-axis

### Pull requests for 0.18.0

- #3226: DOC: Change nb and na to conventional m and n

- #3867: allow cKDTree.query taking a list input in k.

- #4191: ENH: Benchmarking global optimizers

- #4356: ENH: add PPoly.solve(y) for solving `p(x) == y`

- #4370: DOC separate boolean distance functions for clarity

- #4678: BUG: sparse: ensure index dtype is large enough to pass all parameters…

- #4881: scipy.signal: Add the class dlti for linear discrete-time systems….

- #4901: MAINT: add benchmark and improve docstring for signal.lfilter

- #5043: ENH: sparse: add count_nonzero method

- #5136: Attribute kurtosistest() to Anscombe & Glynn (1983)

- #5186: ENH: Port upfirdn

- #5232: ENH: adding spherical Voronoi diagram algorithm to scipy.spatial

- #5279: ENH: Bessel filters with different normalizations, high order

- #5384: BUG: Closes #5027 distance function always casts bool to double

- #5392: ENH: Add zero_phase kwarg to signal.decimate

- #5394: MAINT: sparse: non-canonical test cleanup and fixes

- #5424: DOC: add Scipy developers guide

- #5442: STY: PEP8 amendments

- #5472: Online QR in LGMRES

- #5526: BUG: stats: Fix broadcasting in the rvs() method of the distributions.

- #5530: MAINT: sparse: set format attr explicitly

- #5536: optimize: fix up cg/bfgs initial step sizes

- #5548: PERF: improves performance in stats.kendalltau

- #5549: ENH: Nearest-neighbor chain algorithm for hierarchical clustering

- #5554: MAINT/BUG: closes overflow bug in stats.tiecorrect

- #5557: BUG: modify optimize.bisect to achieve desired tolerance

- #5581: DOC: Tutorial for least_squares

- #5606: ENH: differential_evolution - moving core loop of solve method…

- #5609: [MRG] test against numpy dev

- #5611: use setuptools for bdist_egg distributions

- #5615: MAINT: linalg: tighten _decomp_update + special: remove unused…

- #5622: Add SO(N) rotation matrix generator

- #5623: ENH: special: Add vectorized spherical Bessel functions.

- #5627: Response to issue #5160, implements the skew normal distribution…

- #5628: DOC: Align the description and operation

- #5632: DOC: special: Expanded docs for Airy, elliptic, Bessel functions.

- #5633: MAINT: linalg: unchecked malloc in _decomp_update

- #5634: MAINT: optimize: tighten _group_columns

- #5640: Fixes for io.netcdf masking

- #5645: MAINT: size 0 vector handling in cKDTree range queries

- #5649: MAINT: update license text

- #5650: DOC: Clarify Exponent Order in ltisys.py

- #5651: DOC: Clarify Documentation for scipy.special.gammaln

- #5652: DOC: Fixed scipy.special.betaln Doc

- #5653: [MRG] ENH: CubicSpline interpolator

- #5654: ENH: Burr12 distribution to stats module

- #5659: DOC: Define BEFORE/AFTER in runtests.py -h for bench-compare

- #5660: MAINT: remove functions deprecated before 0.16.0

- #5662: ENH: Circular statistic optimization

- #5663: MAINT: remove uses of np.testing.rand

- #5665: MAINT: spatial: remove matching distance implementation

- #5667: Change some HTTP links to HTTPS

- #5669: DOC: zpk2sos can’t do analog, array_like, etc.

- #5670: Update conf.py

- #5672: MAINT: move a sample distribution to a subclass of rv_discrete

- #5678: MAINT: stats: remove est_loc_scale method

- #5679: MAINT: DRY up generic computations for discrete distributions

- #5680: MAINT: stop shadowing builtins in stats.distributions

- #5681: forward port ENH: Re-enable broadcasting of fill_value

- #5684: BUG: Fix Akima1DInterpolator returning nans

- #5690: BUG: fix stats.ttest_ind_from_stats to handle arrays.

- #5691: BUG: fix generator in io._loadarff to comply with PEP 0479

- #5693: ENH: use math.factorial for exact factorials

- #5695: DOC: dx might be a float, not only an integer

- #5699: MAINT: io: micro-optimize Matlab reading code for size

- #5701: Implement OptimizeResult.__dir__

- #5703: ENH: stats: make R² printing optional in probplot

- #5704: MAINT: typo ouf->out

- #5705: BUG: fix typo in query_pairs

- #5707: DOC:Add some explanation for ftol xtol in scipy.optimize.fmin

- #5708: DOC: optimize: PEP8 minimize docstring

- #5709: MAINT: optimize Cython code for speed and size

- #5713: [DOC] Fix broken link to reference

- #5717: DOC: curve_fit raises RuntimeError on failure.

- #5724: forward port gh-5720

- #5728: STY: remove a blank line

- #5729: ENH: spatial: speed up boolean distances

- #5732: MAINT: differential_evolution changes to default keywords break…

- #5733: TST: differential_evolution - population initiation tests

- #5736: Complex number support in log1p, expm1, and xlog1py

- #5741: MAINT: sparse: clean up extraction functions

- #5742: DOC: signal: Explain fftbins in get_window

- #5748: ENH: Add O(N) random matrix generator

- #5749: ENH: Add polyphase resampling

- #5756: RFC: Bump the minimum numpy version, drop older python versions

- #5761: DOC: Some improvements to least squares docstrings

- #5762: MAINT: spatial: distance refactoring

- #5768: DOC: Fix io.loadmat docstring for mdict param

- #5770: BUG: Accept anything np.dtype can handle for a dtype in sparse.random

- #5772: Update sparse.csgraph.laplacian docstring

- #5777: BUG: fix special.hyp0f1 to work correctly for complex inputs.

- #5780: DOC: Update PIL error install URL

- #5781: DOC: Fix documentation on solve_discrete_lyapunov

- #5782: DOC: cKDTree and KDTree now reference each other

- #5783: DOC: Clarify finish behaviour in scipy.optimize.brute

- #5784: MAINT: Change default tolerances of least_squares to 1e-8

- #5787: BUG: Allow Processing of Zero Order State Space Models in signal.ss2tf

- #5788: DOC, BUG: Clarify and Enforce Input Types to ‘Data’ Objects

- #5789: ENH: sparse: speedup LIL matrix slicing (was #3338)

- #5791: DOC: README: remove coveralls.io

- #5792: MAINT: remove uses of deprecated np.random.random_integers

- #5794: fix affine_transform (fixes #1547 and #5702)

- #5795: DOC: Removed uniform method from kmeans2 doc

- #5797: DOC: Clarify the computation of weighted minkowski

- #5798: BUG: Ensure scipy’s _asfarray returns ndarray

- #5799: TST: Mpmath testing patch

- #5801: allow reading of certain IDL 8.0 .sav files

- #5803: DOC: fix module name in error message

- #5804: DOC: special: Expanded docs for special functions.

- #5805: DOC: Fix order of returns in _spectral_helper

- #5806: ENH: sparse: vectorized coo_matrix.diagonal

- #5808: ENH: Added iqr function to compute IQR metric in scipy/stats/stats.py

- #5810: MAINT/BENCH: sparse: Benchmark cleanup and additions

- #5811: DOC: sparse.linalg: shape, not size

- #5813: Update sparse ARPACK functions min ncv value

- #5815: BUG: Error message contained wrong values

- #5816: remove dead code from stats tests

- #5820: “in”->”a” in order_filter docstring

- #5821: DOC: README: INSTALL.txt was renamed in 2014

- #5825: DOC: typo in the docstring of least_squares

- #5826: MAINT: sparse: increase test coverage

- #5827: NdPPoly rebase

- #5828: Improve numerical stability of hyp0f1 for large orders

- #5829: ENH: sparse: Add copy parameter to all .toXXX() methods in sparse…

- #5830: DOC: rework INSTALL.rst.txt

- #5831: Adds plotting options to voronoi_plot_2d

- #5834: Update stats.binom_test() docstring

- #5836: ENH, TST: Allow SIMO tf’s for tf2ss

- #5837: DOC: Image examples

- #5838: ENH: sparse: add eliminate_zeros() to coo_matrix

- #5839: BUG: Fixed name of NumpyVersion.__repr__

- #5845: MAINT: Fixed typos in documentation

- #5847: Fix bugs in sparsetools

- #5848: BUG: sparse.linalg: add locks to ensure ARPACK threadsafety

- #5849: ENH: sparse.linalg: upgrade to superlu 5.1.1

- #5851: ENH: expose lapack’s ilaver to python to allow lapack verion…

- #5852: MAINT: runtests.py: ensure Ctrl-C interrupts the build

- #5854: DOC: Minor update to documentation

- #5855: Pr 5640

- #5859: ENH: Add random correlation matrix generator

- #5862: BUG: Allow expm for complex matrix with shape (1, 1)

- #5863: FIX: Fix test

- #5864: DOC: add a little note about the Normal survival function (Q-function)

- #5867: Fix for #5865

- #5869: extend normal distribution cdf to complex domain

- #5872: DOC: Note that morlet and cwt don’t work together

- #5875: DOC: interp2d class description

- #5876: MAINT: spatial: remove a stray print statement

- #5878: MAINT: Fixed noisy UserWarnings in ndimage tests. Fixes #5877

- #5879: MAINT: sparse.linalg/superlu: add explicit casts to resolve compiler…

- #5880: MAINT: signal: import gcd from math and not fractions when on…

- #5887: Neldermead initial simplex

- #5894: BUG: _CustomLinearOperator unpickalable in python3.5

- #5895: DOC: special: slightly improve the multigammaln docstring

- #5900: Remove duplicate assignment.

- #5901: Update bundled ARPACK

- #5904: ENH: Make convolve and correlate order-agnostic

- #5905: ENH: sparse.linalg: further LGMRES cleanups

- #5906: Enhancements and cleanup in scipy.integrate (attempt #2)

- #5907: ENH: Change sparse sum and mean dtype casting to match…

- #5909: changes for convolution symmetry

- #5913: MAINT: basinhopping remove instance test closes #5440

- #5919: MAINT: uninitialised var if basinhopping niter=0. closes #5915

- #5920: BLD: Fix missing lsame.c error for MKL

- #5921: DOC: interpolate: add example showing how to work around issue…

- #5926: MAINT: spatial: upgrade to Qhull 2015.2

- #5928: MAINT: sparse: optimize DIA sum/diagonal, csgraph.laplacian

- #5929: Update info/URL for octave-maintainers discussion

- #5930: TST: special: silence DeprecationWarnings from sph_yn

- #5931: ENH: implement the principle branch of the logarithm of Gamma.

- #5934: Typo: “mush” => “must”

- #5935: BUG:string comparison stats._binned_statistic closes #5927

- #5938: Cythonize stats.ks_2samp for a ~33% gain in speed.

- #5939: DOC: fix optimize.fmin convergence docstring

- #5941: Fix minor typo in squareform docstring

- #5942: Update linregress stderr description.

- #5943: ENH: Improve numerical accuracy of lognorm

- #5944: Merge vonmises into stats pyx

- #5945: MAINT: interpolate: Tweak declaration to avoid cython warning…

- #5946: MAINT: sparse: clean up format conversion methods

- #5949: BUG: fix sparse .mean to return a scalar instead of a matrix

- #5955: MAINT: Replace calls to hanning with hann

- #5956: DOC: Missing periods interfering with parsing

- #5958: MAINT: add a test for lognorm.sf underflow

- #5961: MAINT _centered(): rename size to shape

- #5962: ENH: constants: Add multi-scale temperature conversion function

- #5965: ENH: special: faster way for calculating comb() for exact=True

- #5975: ENH: Improve FIR path of signal.decimate

- #5977: MAINT/BUG: sparse: remove overzealous bmat checks

- #5978: minimize_neldermead() stop at user requested maxiter or maxfev

- #5983: ENH: make sparse sum cast dtypes like NumPy sum for 32-bit…

- #5985: BUG, API: Add jac parameter to curve_fit

- #5989: ENH: Add firls least-squares fitting

- #5990: BUG: read tries to handle 20-bit WAV files but shouldn’t

- #5991: DOC: Cleanup wav read/write docs and add tables for common types

- #5994: ENH: Add gesvd method for svd

- #5996: MAINT: Wave cleanup

- #5997: TST: Break up upfirdn tests & compare to lfilter

- #6001: Filter design docs

- #6002: COMPAT: Expand compatibility fromnumeric.py

- #6007: ENH: Skip conversion of TF to TF in freqresp

- #6009: DOC: fix incorrect versionadded for entr, rel_entr, kl_div

- #6013: Fixed the entropy calculation of the von Mises distribution.

- #6014: MAINT: make gamma, rgamma use loggamma for complex arguments

- #6020: WIP: ENH: add exact=True factorial for vectors

- #6022: Added ‘lanczos’ to the image interpolation function list.

- #6024: BUG: optimize: do not use dummy constraints in SLSQP when no…

- #6025: ENH: Boundary value problem solver for ODE systems

- #6029: MAINT: Future imports for optimize._lsq

- #6030: ENH: stats.trap - adding trapezoidal distribution closes #6028

- #6031: MAINT: Some improvements to optimize._numdiff

- #6032: MAINT: Add special/_comb.c to .gitignore

- #6033: BUG: check the requested approximation rank in interpolative.svd

- #6034: DOC: Doc for mannwhitneyu in stats.py corrected

- #6040: FIX: Edit the wrong link in f_oneway

- #6044: BUG: (ordqz) always increase parameter lwork by 1.

- #6047: ENH: extend special.spence to complex arguments.

- #6049: DOC: Add documentation of PR #5640 to the 0.18.0 release notes

- #6050: MAINT: small cleanups related to loggamma

- #6070: Add asarray to explicitly cast list to numpy array in wilcoxon…

- #6071: DOC: antialiasing filter and link decimate resample, etc.

- #6075: MAINT: reimplement special.digamma for complex arguments

- #6080: avoid multiple computation in kstest

- #6081: Clarified pearson correlation return value

- #6085: ENH: allow long indices of sparse matrix with umfpack in spsolve()

- #6086: fix description for associated Laguerre polynomials

- #6087: Corrected docstring of splrep.

- #6094: ENH: special: change zeta signature to zeta(x, q=1)

- #6095: BUG: fix integer overflow in special.spence

- #6106: Fixed Issue #6105

- #6116: BUG: matrix logarithm edge case

- #6119: TST: DeprecationWarnings in stats on python 3.5 closes #5885

- #6120: MAINT: sparse: clean up sputils.isintlike

- #6122: DOC: optimize: linprog docs should say minimize instead of maximize

- #6123: DOC: optimize: document the fun field in `scipy.optimize.OptimizeResult`

- #6124: Move FFT zero-padding calculation from signaltools to fftpack

- #6125: MAINT: improve special.gammainc in the `a ~ x` regime.

- #6130: BUG: sparse: Fix COO dot with zero columns

- #6138: ENH: stats: Improve behavior of genextreme.sf and genextreme.isf

- #6146: MAINT: simplify the expit implementation

- #6151: MAINT: special: make generate_ufuncs.py output deterministic

- #6152: TST: special: better test for gammainc at large arguments

- #6153: ENH: Make next_fast_len public and faster

- #6154: fix typo “mush”–>”must”

- #6155: DOC: Fix some incorrect RST definition lists

- #6160: make logsumexp error out on a masked array

- #6161: added missing bracket to rosen documentation

- #6163: ENH: Added “kappa4” and “kappa3” distributions.

- #6164: DOC: Minor clean-up in integrate._bvp

- #6169: Fix mpf_assert_allclose to handle iterable results, such as maps

- #6170: Fix pchip_interpolate convenience function

- #6172: Corrected misplaced bracket in doc string

- #6175: ENH: sparse.csgraph: Pass indices to shortest_path

- #6178: TST: increase test coverage of sf and isf of a generalized extreme…

- #6179: TST: avoid a deprecation warning from numpy

- #6181: ENH: Boundary conditions for CubicSpline

- #6182: DOC: Add examples/graphs to max_len_seq

- #6183: BLD: update Bento build config files for recent changes.

- #6184: BUG: fix issue in io/wavfile for float96 input.

- #6186: ENH: Periodic extrapolation for PPoly and BPoly

- #6192: MRG: Add circle-CI

- #6193: ENH: sparse: avoid setitem densification

- #6196: Fixed missing sqrt in docstring of Mahalanobis distance in cdist,…

- #6206: MAINT: Minor changes in solve_bvp

- #6207: BUG: linalg: for BLAS, downcast complex256 to complex128, not…

- #6209: BUG: io.matlab: avoid buffer overflows in read_element_into

- #6210: BLD: use setuptools when building.

- #6214: BUG: sparse.linalg: fix bug in LGMRES breakdown handling

- #6215: MAINT: special: make loggamma use zdiv

- #6220: DOC: Add parameter

- #6221: ENH: Improve Newton solver for solve_bvp

- #6223: pchip should work for length-2 arrays

- #6224: signal.lti: deprecate cross-class properties/setters

- #6229: BUG: optimize: avoid an infinite loop in Newton-CG

- #6230: Add example for application of gaussian filter

- #6236: MAINT: gumbel_l accuracy

- #6237: MAINT: rayleigh accuracy

- #6238: MAINT: logistic accuracy

- #6239: MAINT: bradford distribution accuracy

- #6240: MAINT: avoid bad fmin in l-bfgs-b due to maxfun interruption

- #6241: MAINT: weibull_min accuracy

- #6246: ENH: Add _support_mask to distributions

- #6247: fixed a print error for an example of ode

- #6249: MAINT: change x-axis label for stats.probplot to “theoretical…

- #6250: DOC: fix typos

- #6251: MAINT: constants: filter out test noise from deprecated conversions

- #6252: MAINT: io/arff: remove unused variable

- #6253: Add examples to scipy.ndimage.filters

- #6254: MAINT: special: fix some build warnings

- #6258: MAINT: inverse gamma distribution accuracy

- #6260: MAINT: signal.decimate - Use discrete-time objects

- #6262: BUG: odr: fix string formatting

- #6267: TST: fix some test issues in interpolate and stats.

- #6269: TST: fix some warnings in the test suite

- #6274: ENH: Add sosfiltfilt

- #6276: DOC: update release notes for 0.18.0

- #6277: MAINT: update the author name mapping

- #6282: DOC: Correcting references for scipy.stats.normaltest

- #6283: DOC: some more additions to 0.18.0 release notes.

- #6284: Add versionadded:: directive to loggamma.

- #6285: BUG: stats: Inconsistency in the multivariate_normal docstring…

- #6290: Add author list, gh-lists to 0.18.0 release notes

- #6293: TST: special: relax a test’s precision

- #6295: BUG: sparse: stop comparing None and int in bsr_matrix constructor

- #6313: MAINT: Fix for python 3.5 travis-ci build problem.

- #6327: TST: signal: use assert_allclose for testing near-equality in…

- #6330: BUG: spatial/qhull: allocate qhT via malloc to ensure CRT likes…

- #6332: TST: fix stats.iqr test to not emit warnings, and fix line lengths.

- #6334: MAINT: special: fix a test for hyp0f1

- #6347: TST: spatial.qhull: skip a test on 32-bit platforms

- #6350: BUG: optimize/slsqp: don’t overwrite an array out of bounds

- #6351: BUG: #6318 Interp1d ‘nearest’ integer x-axis overflow issue fixed

- #6355: Backports for 0.18.0

SciPy 0.18.1 Release Notes SciPy 0.17.1 Release Notes