# SciPy 1.6.0 Release Notes

Contents

- SciPy 1.6.0 Release Notes

  - Highlights of this release

    - New features

  - `scipy.special` improvements

  - `scipy.odr` improvements

  - `scipy.integrate` improvements

  - `scipy.cluster` improvements

  - `scipy.interpolate` improvements

  - `scipy.io` improvements

  - `scipy.linalg` improvements

  - `scipy.ndimage` improvements

  - `scipy.optimize` improvements

  - `scipy.signal` improvements

  - `scipy.sparse` improvements

  - `scipy.sparse.linalg` improvements

  - `scipy.fft` improvements

  - `scipy.spatial` improvements

  - `scipy.stats` improvements

    - Deprecated features

  - `scipy.spatial` changes

    - Backwards incompatible changes

  - `scipy` changes

  - `scipy.interpolate` changes

  - `scipy.linalg` changes

  - `scipy.signal` changes

  - `scipy.spatial` changes

  - `scipy.stats` changes

    - Other changes

    - Authors

  - Issues closed for 1.6.0

  - Pull requests for 1.6.0

SciPy 1.6.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. 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.6.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

## Highlights of this release

- `scipy.ndimage` improvements: Fixes and ehancements to boundary extension modes for interpolation functions. Support for complex-valued inputs in many filtering and interpolation functions. New `grid_mode` option for `scipy.ndimage.zoom` to enable results consistent with scikit-image’s `rescale`.

- `scipy.optimize.linprog` has fast, new methods for large, sparse problems from the `HiGHS` library.

- `scipy.stats` improvements including new distributions, a new test, and enhancements to existing distributions and tests

### New features

## `scipy.special` improvements

`scipy.special` now has improved support for 64-bit `LAPACK` backend

## `scipy.odr` improvements

`scipy.odr` now has support for 64-bit integer `BLAS`

`scipy.odr.ODR` has gained an optional `overwrite` argument so that existing files may be overwritten.

## `scipy.integrate` improvements

Some renames of functions with poor names were done, with the old names retained without being in the reference guide for backwards compatibility reasons: - `integrate.simps` was renamed to `integrate.simpson` - `integrate.trapz` was renamed to `integrate.trapezoid` - `integrate.cumtrapz` was renamed to `integrate.cumulative_trapezoid`

## `scipy.cluster` improvements

`scipy.cluster.hierarchy.DisjointSet` has been added for incremental connectivity queries.

`scipy.cluster.hierarchy.dendrogram` return value now also includes leaf color information in leaves_color_list.

## `scipy.interpolate` improvements

`scipy.interpolate.interp1d` has a new method `nearest-up`, similar to the existing method `nearest` but rounds half-integers up instead of down.

## `scipy.io` improvements

Support has been added for reading arbitrary bit depth integer PCM WAV files from 1- to 32-bit, including the commonly-requested 24-bit depth.

## `scipy.linalg` improvements

The new function `scipy.linalg.matmul_toeplitz` uses the FFT to compute the product of a Toeplitz matrix with another matrix.

`scipy.linalg.sqrtm` and `scipy.linalg.logm` have performance improvements thanks to additional Cython code.

Python `LAPACK` wrappers have been added for `pptrf`, `pptrs`, `ppsv`, `pptri`, and `ppcon`.

`scipy.linalg.norm` and the `svd` family of functions will now use 64-bit integer backends when available.

## `scipy.ndimage` improvements

`scipy.ndimage.convolve`, `scipy.ndimage.correlate` and their 1d counterparts now accept both complex-valued images and/or complex-valued filter kernels. All convolution-based filters also now accept complex-valued inputs (e.g. `gaussian_filter`, `uniform_filter`, etc.).

Multiple fixes and enhancements to boundary handling were introduced to `scipy.ndimage` interpolation functions (i.e. `affine_transform`, `geometric_transform`, `map_coordinates`, `rotate`, `shift`, `zoom`).

A new boundary mode, `grid-wrap` was added which wraps images periodically, using a period equal to the shape of the input image grid. This is in contrast to the existing `wrap` mode which uses a period that is one sample smaller than the original signal extent along each dimension.

A long-standing bug in the `reflect` boundary condition has been fixed and the mode `grid-mirror` was introduced as a synonym for `reflect`.

A new boundary mode, `grid-constant` is now available. This is similar to the existing ndimage `constant` mode, but interpolation will still performed at coordinate values outside of the original image extent. This `grid-constant` mode is consistent with OpenCV’s `BORDER_CONSTANT` mode and scikit-image’s `constant` mode.

Spline pre-filtering (used internally by `ndimage` interpolation functions when `order >= 2`), now supports all boundary modes rather than always defaulting to mirror boundary conditions. The standalone functions `spline_filter` and `spline_filter1d` have analytical boundary conditions that match modes `mirror`, `grid-wrap` and `reflect`.

`scipy.ndimage` interpolation functions now accept complex-valued inputs. In this case, the interpolation is applied independently to the real and imaginary components.

The `ndimage` tutorials (https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been updated with new figures to better clarify the exact behavior of all of the interpolation boundary modes.

`scipy.ndimage.zoom` now has a `grid_mode` option that changes the coordinate of the center of the first pixel along an axis from 0 to 0.5. This allows resizing in a manner that is consistent with the behavior of scikit-image’s `resize` and `rescale` functions (and OpenCV’s `cv2.resize`).

## `scipy.optimize` improvements

`scipy.optimize.linprog` has fast, new methods for large, sparse problems from the `HiGHS` C++ library. `method='highs-ds'` uses a high performance dual revised simplex implementation (HSOL), `method='highs-ipm'` uses an interior-point method with crossover, and `method='highs'` chooses between the two automatically. These methods are typically much faster and often exceed the accuracy of other `linprog` methods, so we recommend explicitly specifying one of these three method values when using `linprog`.

`scipy.optimize.quadratic_assignment` has been added for approximate solution of the quadratic assignment problem.

`scipy.optimize.linear_sum_assignment` now has a substantially reduced overhead for small cost matrix sizes

`scipy.optimize.least_squares` has improved performance when the user provides the jacobian as a sparse jacobian already in `csr_matrix` format

`scipy.optimize.linprog` now has an `rr_method` argument for specification of the method used for redundancy handling, and a new method for this purpose is available based on the interpolative decomposition approach.

## `scipy.signal` improvements

`scipy.signal.gammatone` has been added to design FIR or IIR filters that model the human auditory system.

`scipy.signal.iircomb` has been added to design IIR peaking/notching comb filters that can boost/attenuate a frequency from a signal.

`scipy.signal.sosfilt` performance has been improved to avoid some previously- observed slowdowns

`scipy.signal.windows.taylor` has been added–the Taylor window function is commonly used in radar digital signal processing

`scipy.signal.gauss_spline` now supports `list` type input for consistency with other related SciPy functions

`scipy.signal.correlation_lags` has been added to allow calculation of the lag/ displacement indices array for 1D cross-correlation.

## `scipy.sparse` improvements

A solver for the minimum weight full matching problem for bipartite graphs, also known as the linear assignment problem, has been added in `scipy.sparse.csgraph.min_weight_full_bipartite_matching`. In particular, this provides functionality analogous to that of `scipy.optimize.linear_sum_assignment`, but with improved performance for sparse inputs, and the ability to handle inputs whose dense representations would not fit in memory.

The time complexity of `scipy.sparse.block_diag` has been improved dramatically from quadratic to linear.

## `scipy.sparse.linalg` improvements

The vendored version of `SuperLU` has been updated

## `scipy.fft` improvements

The vendored `pocketfft` library now supports compiling with ARM neon vector extensions and has improved thread pool behavior.

## `scipy.spatial` improvements

The python implementation of `KDTree` has been dropped and `KDTree` is now implemented in terms of `cKDTree`. You can now expect `cKDTree`-like performance by default. This also means `sys.setrecursionlimit` no longer needs to be increased for querying large trees.

`transform.Rotation` has been updated with support for Modified Rodrigues Parameters alongside the existing rotation representations (PR gh-12667).

`scipy.spatial.transform.Rotation` has been partially cythonized, with some performance improvements observed

`scipy.spatial.distance.cdist` has improved performance with the `minkowski` metric, especially for p-norm values of 1 or 2.

## `scipy.stats` improvements

New distributions have been added to `scipy.stats`:

- The asymmetric Laplace continuous distribution has been added as `scipy.stats.laplace_asymmetric`.

- The negative hypergeometric distribution has been added as `scipy.stats.nhypergeom`.

- The multivariate t distribution has been added as `scipy.stats.multivariate_t`.

- The multivariate hypergeometric distribution has been added as `scipy.stats.multivariate_hypergeom`.

The `fit` method has been overridden for several distributions (`laplace`, `pareto`, `rayleigh`, `invgauss`, `logistic`, `gumbel_l`, `gumbel_r`); they now use analytical, distribution-specific maximum likelihood estimation results for greater speed and accuracy than the generic (numerical optimization) implementation.

The one-sample Cramér-von Mises test has been added as `scipy.stats.cramervonmises`.

An option to compute one-sided p-values was added to `scipy.stats.ttest_1samp`, `scipy.stats.ttest_ind_from_stats`, `scipy.stats.ttest_ind` and `scipy.stats.ttest_rel`.

The function `scipy.stats.kendalltau` now has an option to compute Kendall’s tau-c (also known as Stuart’s tau-c), and support has been added for exact p-value calculations for sample sizes `> 171`.

stats.trapz was renamed to stats.trapezoid, with the former name retained as an alias for backwards compatibility reasons.

The function `scipy.stats.linregress` now includes the standard error of the intercept in its return value.

The `_logpdf`, `_sf`, and `_isf` methods have been added to `scipy.stats.nakagami`; `_sf` and `_isf` methods also added to `scipy.stats.gumbel_r`

The `sf` method has been added to `scipy.stats.levy` and `scipy.stats.levy_l` for improved precision.

`scipy.stats.binned_statistic_dd` performance improvements for the following computed statistics: `max`, `min`, `median`, and `std`.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of these improvements to `scipy.stats`.

### Deprecated features

## `scipy.spatial` changes

Calling `KDTree.query` with `k=None` to find all neighbours is deprecated. Use `KDTree.query_ball_point` instead.

`distance.wminkowski` was deprecated; use `distance.minkowski` and supply weights with the `w` keyword instead.

### Backwards incompatible changes

## `scipy` changes

Using `scipy.fft` as a function aliasing `numpy.fft.fft` was removed after being deprecated in SciPy `1.4.0`. As a result, the `scipy.fft` submodule must be explicitly imported now, in line with other SciPy subpackages.

## `scipy.interpolate` changes

## `scipy.linalg` changes

## `scipy.signal` changes

The output of `decimate`, `lfilter_zi`, `lfiltic`, `sos2tf`, and `sosfilt_zi` have been changed to match `numpy.result_type` of their inputs.

The window function `slepian` was removed. It had been deprecated since SciPy `1.1`.

## `scipy.spatial` changes

`cKDTree.query` now returns 64-bit rather than 32-bit integers on Windows, making behaviour consistent between platforms (PR gh-12673).

## `scipy.stats` changes

The `frechet_l` and `frechet_r` distributions were removed. They were deprecated since SciPy `1.0`.

### Other changes

`setup_requires` was removed from `setup.py`. This means that users invoking `python setup.py install` without having numpy already installed will now get an error, rather than having numpy installed for them via `easy_install`. This install method was always fragile and problematic, users are encouraged to use `pip` when installing from source.

- Fixed a bug in `scipy.optimize.dual_annealing` `accept_reject` calculation that caused uphill jumps to be accepted less frequently.

- The time required for (un)pickling of `scipy.stats.rv_continuous`, `scipy.stats.rv_discrete`, and scipy.stats.rv_frozen has been significantly reduced (gh12550). Inheriting subclasses should note that `__setstate__` no longer calls `__init__` upon unpickling.

### Authors

- @endolith

- @vkk800

- aditya +

- George Bateman +

- Christoph Baumgarten

- Peter Bell

- Tobias Biester +

- Keaton J. Burns +

- Evgeni Burovski

- Rüdiger Busche +

- Matthias Bussonnier

- Dominic C +

- Corallus Caninus +

- CJ Carey

- Thomas A Caswell

- chapochn +

- Lucía Cheung

- Zach Colbert +

- Coloquinte +

- Yannick Copin +

- Devin Crowley +

- Terry Davis +

- Michaël Defferrard +

- devonwp +

- Didier +

- divenex +

- Thomas Duvernay +

- Eoghan O’Connell +

- Gökçen Eraslan

- Kristian Eschenburg +

- Ralf Gommers

- Thomas Grainger +

- GreatV +

- Gregory Gundersen +

- h-vetinari +

- Matt Haberland

- Mark Harfouche +

- He He +

- Alex Henrie

- Chun-Ming Huang +

- Martin James McHugh III +

- Alex Izvorski +

- Joey +

- ST John +

- Jonas Jonker +

- Julius Bier Kirkegaard

- Marcin Konowalczyk +

- Konrad0

- Sam Van Kooten +

- Sergey Koposov +

- Peter Mahler Larsen

- Eric Larson

- Antony Lee

- Gregory R. Lee

- Loïc Estève

- Jean-Luc Margot +

- MarkusKoebis +

- Nikolay Mayorov

- 7. 4. McBain

- Andrew McCluskey +

- Nicholas McKibben

- Sturla Molden

- Denali Molitor +

- Eric Moore

- Shashaank N +

- Prashanth Nadukandi +

- nbelakovski +

- Andrew Nelson

- Nick +

- Nikola Forró +

- odidev

- ofirr +

- Sambit Panda

- Dima Pasechnik

- Tirth Patel +

- Matti Picus

- Paweł Redzyński +

- Vladimir Philipenko +

- Philipp Thölke +

- Ilhan Polat

- Eugene Prilepin +

- Vladyslav Rachek

- Ram Rachum +

- Tyler Reddy

- Martin Reinecke +

- Simon Segerblom Rex +

- Lucas Roberts

- Benjamin Rowell +

- Eli Rykoff +

- Atsushi Sakai

- Moritz Schulte +

- Daniel B. Smith

- Steve Smith +

- Jan Soedingrekso +

- Victor Stinner +

- Jose Storopoli +

- Diana Sukhoverkhova +

- Søren Fuglede Jørgensen

- taoky +

- Mike Taves +

- Ian Thomas +

- Will Tirone +

- Frank Torres +

- Seth Troisi

- Ronald van Elburg +

- Hugo van Kemenade

- Paul van Mulbregt

- Saul Ivan Rivas Vega +

- Pauli Virtanen

- Jan Vleeshouwers

- Samuel Wallan

- Warren Weckesser

- Ben West +

- Eric Wieser

- WillTirone +

- Levi John Wolf +

- Zhiqing Xiao

- Rory Yorke +

- Yun Wang (Maigo) +

- Egor Zemlyanoy +

- ZhihuiChen0903 +

- Jacob Zhong +

A total of 122 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 1.6.0

- #1323: ndimage.shift destroys data from edges (Trac #796)

- #1892: using rptfile= with an existing file causes a Fortran runtime…

- #1903: ndimage.rotate misses some values (Trac #1378)

- #1930: scipy.io.wavfile should be able to read 24 bit signed wave (Trac…

- #3158: Odd casting behaviour of signal.filtfilt

- #3203: interpolation.zoom incorrect output for certain cases

- #3645: BUG: stats: mstats.pearsonr calculation is wrong if the masks…

- #3665: Return Bunch objects from stats functions

- #4922: unexpected zero output values from zoom

- #5202: BUG: stats: Spurious warnings from the pdf method of several…

- #5223: Zoom does not return the same values when resizing a sub-array…

- #5396: scipy.spatial.distance.pdist documention bug

- #5489: ValueError: failed to create intent(cache|hide)|optional array–…

- #6096: loadmat drops dtype of empty arrays when squeeze_me=True

- #6713: sicpy.ndimage.zoom returns artefacts and boundaries in some cases

- #7125: Impossible to know number of dimensions in c function used by…

- #7324: scipy.ndimage.zoom bad interpolation when downsampling (zoom…

- #8131: BUG: geometric_transform wrap mode possible bug

- #8163: LSMR fails on some random values when providing an x0

- #8210: Why should I choose order > 1 for scipy.ndimage.zoom?

- #8465: Unexpected behavior with reflect mode of ndimage.rotate

- #8776: cdist behavior with Minkowsky and np.inf

- #9168: documentation of pearson3 in scipy.stats unclear

- #9223: Faster implementation of scipy.sparse.block_diag

- #9476: Invalid index in signal.medfilt2d’s QUICK_SELECT

- #9857: scipy.odr.Output.sd_beta is not standard error

- #9865: Strange behavior of `ndimage.shift` and `ndimage.affine_transform`

- #10042: Consider support for multivariate student-t distribution?

- #10134: gausshyper distribution accepts invalid parameters

- #10179: str+bytes concatenation error in test_lapack.py

- #10216: cKDTree.query_ball_point speed regression

- #10463: ENH: vectorize scipy.fft for more CPU architectures

- #10593: Rename `sum` ndimage function

- #10595: scipy.stats.ttest_1samp should support alternative hypothesis

- #10610: ndimage.interpolation.spline_filter1d default value of mode

- #10620: ndimage.interpolation.zoom() option to work like skimage.transform.resize()

- #10711: Array Shapes Not Aligned Bug in scipy.optimize._lsq.lsq_linear.py

- #10782: BUG: optimize: methods unknown to `scipy.optimize.show_options`

- #10892: Possible typo in an equation of optimize/dual_annealing

- #11020: signal.fftconvolve return a tuple including lag information

- #11093: scipy.interpolate.interp1d can not handle datetime64

- #11170: Use manylinux2014 to get aarch64/ppc64le support

- #11186: BUG: stats: pearson3 CDF and SF functions incorrect when skew…

- #11366: DeprecationWarning due to invalid escape sequences

- #11403: Optimize raises “ValueError: `x0` violates bound constraints”…

- #11558: ENH: IIR comb filter

- #11559: BUG: iirdesign doesn’t fail for frequencies above Nyquist

- #11567: scipy.signal.iirdesign doesn’t check consistency of wp and ws…

- #11654: ENH: Add Negative Hypergeometric Distribution

- #11720: BUG: stats: wrong shape from median_absolute_deviation for arrays…

- #11746: BUG: stats: pearson3 returns size 1 arrays where other distributions…

- #11756: Improve and fix *Spline docstrings and code

- #11758: BUG: of scipy.interpolate.CubicSpline when `bc_type’ is set…

- #11925: MAINT: remove character encoding check in CI?

- #11963: Test failures - TestLinprogIPSparseCholmod

- #12102: incorrect first moment of non central t-distribution

- #12113: scipy.stats.poisson docs for rate = 0

- #12152: ENH: signal.gauss_spline should accept a list

- #12157: BUG: Iteration index initialisation is wrong in scipy.optimize.linesearch.scalar_search_wolfe2

- #12162: Storing Rotation object in NumPy array returns an array with…

- #12176: cannot modify the slice of an array returned by `wavfile.read`

- #12190: retrieve leave colors from dendrogram

- #12196: PERF: scipy.linalg.pinv is very slow compared to numpy.linalg.pinv

- #12222: Interpolating categorical data (interp1d)

- #12231: Is the p-value of the Kruskal-Wallis test two-sided?

- #12249: ENH: least_squares: should not re-instanciate csr_matrix if already…

- #12264: DOC: optimize: linprog method-specific function signature

- #12290: DOC: Convex Hull areas are actually perimeters for 2-dimensional…

- #12308: integrate.solve_ivp with DOP853 method fails when yDot = 0

- #12326: BUG: stats.exponnorm.pdf returns 0 for small K

- #12337: scipy.sparse.linalg.eigsh documentation is misleading

- #12339: scipy.io.wavfile.write documentation has wrong example

- #12340: sparse.lil_matrix.tocsr() fails silently on matrices with nzn…

- #12350: Create a 2-parameter version of the gamma distribution

- #12369: scipy.signal.correlate has an error in the documentation, examples…

- #12373: interp1d returns incorrect values for step functions

- #12378: interpolate.NearestNDInterpolator.__call__ & LinearNDInterpolator.__call__…

- #12411: scipy.stats.spearmanr mishandles nan variables with “propogate”

- #12413: DOC: Remove the “Basic functions” section from the SciPy tutorial.

- #12415: scipy.stats.dirichlet documentation issue

- #12419: least_squares ValueError with ‘lm’ method - regression from 1.4.1…

- #12431: Request for Python wrapper for LAPACK’s ?pptrf (Cholesky factorization…

- #12458: spearmanr with entire NaN columns produces errors

- #12477: WIP: Addition of MLE for stats.invgauss/wald

- #12483: reading .wav fails when the file is too big on python 3.6.0

- #12490: BUG: stats: logistic and genlogistic logpdf overflow for large…

- #12499: LinearNDInterpolator raises ValueError when value array has writeable=False…

- #12523: Wrong key in __odrpack.c

- #12547: typo in scipy/cluster/_hierarchy.pyx

- #12549: DOC: least_squares return type is poorly formatted.

- #12578: TST: test_bounds_infeasible_2 failing on wheels repo cron jobs

- #12585: ENH: Add Multivariate Hypergeometric Distribution

- #12604: unintuitive conversion in `scipy.constants.lambda2nu`

- #12606: DOC: Invalid syntax in example.

- #12665: List of possible bugs found by automated code analysis

- #12696: scipy.optimize.fminbound, numpy depreciation warning Creating…

- #12699: TestProjections.test_iterative_refinements_dense failure

- #12701: TestDifferentialEvolutionSolver::test_L4 failing

- #12719: Misleading scipy.signal.get_window() docstring with ‘exponential’…

- #12740: circstd doesn’t handle R = hypot(S, C) > 1

- #12749: ENH: interp1d Matlab compatibility

- #12773: Meta-issue: ndimage spline boundary handling (NumFOCUS proposal)

- #12813: optimize.root(method=”krylov”) fails if options[“tol_norm”] expects…

- #12815: stats.zscore inconsistent behavior when all values are the same

- #12840: scipy.signal.windows.dpss docstring typo

- #12874: Rotation.random vs stats.special_ortho_group

- #12881: FFT - documentation - examples - linspace construction

- #12904: BUG: parsing in loadarff()

- #12917: GitHub Actions nightly build triggered on forks

- #12919: BUG: numerical precision, use gammaln in nct.mean

- #12924: Rename Sample Based Integration Methods to Comply with Code of…

- #12940: Should the minimum numpy for AIX be bumped to 1.16.5

- #12951: A possible typo in scipy.stats.weightedtau

- #12952: [Documentation question] Would it be more precise to specify…

- #12970: Documentation presents second order sections as the correct choice…

- #12982: Calculate standard error of the intercept in linregress

- #12985: Possible wrong link in scipy.stats.wilcoxon doc

- #12991: least_squares broken with float32

- #13001: `OptimizeResult.message` from `L-BFGS-B` is a bytes, not…

- #13030: BUG: lint_diff.py still fails for backport PRs

- #13077: CI: codecov proper patch diffs

- #13085: Build failing on main branch after HiGHS solver merge

- #13088: BLD, BUG: wheel builds failure with HiGHS/optimize

- #13099: Wrong output format for empty sparse results of kron

- #13108: TST, CI: GitHub Actions MacOS Failures

- #13111: BUG, DOC: refguide check is failing

- #13127: ODR output file writing broken in conda env with system compilers

- #13134: FromTravis migration tracker

- #13140: BUG: signal: `ss2tf` incorrectly truncates output to integers.

- #13179: CI: lint is failing because of output to stderr

- #13182: Key appears twice in `test_optimize.test_show_options`

- #13191: `scipy.linalg.lapack.dgesjv` overwrites original arrays if…

- #13207: TST: Erratic test failure in test_cossin_separate

- #13221: BUG: pavement.py glitch

- #13239: Segmentation fault with `eigh(…, driver=”evx”)` for 10x10…

- #13248: ndimage: improper cval handling for complex-valued inputs

## Pull requests for 1.6.0

- #8032: ENH: Add in taylor window common in Radar processing

- #8779: CI: Run benchmarks

- #9361: ENH: Add Kendall’s tau-a and tau-c variants to scipy.stats.kendalltau()

- #11068: ENH: Adds correlation_lags function to scipy.signal

- #11119: ENH: add Cramer-von-Mises (one-sample) test to scipy.stats

- #11249: ENH: optimize: interpolative decomposition redundancy removal…

- #11346: ENH: add fast toeplitz matrix multiplication using FFT

- #11413: ENH: Multivariate t-distribution (stale)

- #11563: ENH: exact p-value in stats.kendalltau() for sample sizes > 171

- #11691: ENH: add a stack of reversal functions to linprog

- #12043: ENH: optimize: add HiGHS methods to linprog - continued

- #12061: Check parameter consistensy in signal.iirdesign

- #12067: MAINT: Cleanup OLDAPI in ndimage/src/_ctest.c

- #12069: DOC: Add developer guidelines for implementing the nan_policy…

- #12077: MAINT: malloc return value checks for cython

- #12080: MAINT: Remove suppress_warnings

- #12085: ENH: special: support ILP64 Lapack

- #12086: MAINT: Cleanup PyMODINIT_FUNC used during 2to3

- #12097: ENH: stats: override stats.rayleigh.fit with analytical MLE

- #12112: DOC: Improve integrate.nquad docstring

- #12125: TST: Add a test for stats.gmean with negative input

- #12139: TST: Reduce flakiness in lsmr test

- #12142: DOC: add a note in poisson distribution when mu=0 and k=0 in…

- #12144: DOC: Update ndimage.morphology.distance_transform*

- #12154: ENH: scipy.signal: allow lists in gauss_spline

- #12170: ENH: scipy.stats: add negative hypergeometric distribution

- #12177: MAINT: Correctly add input line to ValueError

- #12183: ENH: Use fromfile where possible

- #12186: MAINT: generalize tests in SphericalVoronoi

- #12198: TST: Fix str + bytes error

- #12199: ENH: match np.result_type behaviour in some scipy.signal functions

- #12200: ENH: add FIR and IIR gammatone filters to scipy.signal

- #12204: ENH: Add overwrite argument for odr.ODR() and its test.

- #12206: MAINT:lstsq: Switch to tranposed problem if the array is tall

- #12208: wavfile bugfixes and maintenance

- #12214: DOC: fix docstring of “sd_beta” of odr.Output.

- #12234: MAINT: prevent divide by zero warnings in scipy.optimize BFGS…

- #12235: REL: set version to 1.6.0.dev0

- #12237: BUG: Fix exit condition for QUICK_SELECT pivot

- #12242: ENH: Rename ndimage.sum to ndimage.sum_labels (keep sum as alias)

- #12243: EHN: Update SuperLU

- #12244: MAINT: stats: avoid spurious warnings in ncx2.pdf

- #12245: DOC: Fixed incorrect default for mode in scipy.ndimage.spline_filter1d

- #12248: MAINT: clean up pavement.py

- #12250: ENH: Replaced csr_matrix() by tocsr() and complemented docstring

- #12253: TST, CI: turn on codecov patch diffs

- #12259: MAINT: Remove duplicated test for import cycles

- #12263: ENH: Rename LocalSearchWrapper bounds

- #12265: BUG optimize: Accept np.matrix in lsq_linear

- #12266: BUG: Fix paren error in dual annealing accept_reject calculation

- #12269: MAINT: Included mismatched shapes in error messages.

- #12279: MAINT: `__array__` and array protocols cannot be used in sparse.

- #12281: DOC: update wheel DL docs

- #12283: ENH: odr: ILP64 Blas support in ODR

- #12284: ENH: linalg: support for ILP64 BLAS/LAPACK in f2py wrappers

- #12286: ENH: Cythonize scipy.spatial.transform.Rotation

- #12287: ENH: Read arbitrary bit depth (including 24-bit) WAVs

- #12292: BLD: fix musl compilation

- #12293: MAINT: Fix a DeprecationWarning in validate_runtests_log.py.

- #12296: DOC: Clarify area/volume in scipy.spatial.ConvexHull docstrings

- #12302: CI: Run travis builds on master to keep cache up to date

- #12305: TST: Cleanup print statements in tests

- #12323: ENH: Add a Bunch-like class to use as a backwards compatible…

- #12324: BUG: io: Fix an error that occurs when attempting to raise a…

- #12327: DOC: clarify docstrings of `query_ball_tree` and `query_pairs`

- #12334: PERF: Improve cKDTree.query_ball_point constant time cython overhead

- #12338: DOC: improve consistency and clarity of docs in linalg and sparse/linalg

- #12341: DOC: add Examples for KDTree query_ball_tree and query_pairs

- #12343: DOC: add examples for special.eval_legendre()

- #12349: BUG: avoid overflow in sum() for 32-bit systems

- #12351: DOC: Fix example wavfile to be 16bit

- #12352: [BUG] Consider 0/0 division in DOP853 error estimation

- #12353: Fix exception causes in vq.py

- #12354: MAINT: Cleanup unneeded void* cast in setlist.pxd

- #12355: TST: Remove hack for old win-amd64 bug

- #12356: ENH: Faster implementation of scipy.sparse.block_diag (#9411…

- #12357: MAINT,TST: update and run scipy/special/utils/convert.py

- #12358: TST: Check mstat.skewtest pvalue

- #12359: TST: Sparse matrix test with int64 indptr and indices

- #12363: DOC: ref. in CloughTocher2DInterpolator

- #12364: DOC: `sparse_distance_matrix` and `count_neighbors` examples

- #12371: MAINT, CI: bump to latest stable OpenBLAS

- #12372: MAINT: Minor cleanup of (c)KDTree tests

- #12374: DEP: Deprecate `distance.wminkowski`

- #12375: ENH: Add fast path for minkowski distance with p=1,2 and support…

- #12376: Fix exception causes in most of the codebase

- #12377: DOC: Quick fix - adds newline to correlation_lags docstring Examples…

- #12381: BENCH: remove obsolete goal_time param

- #12382: ENH: Replace KDTree with a thin wrapper over cKDTree

- #12385: DOC: improve docstrings of interpolate.NearestNDInterpolator.__call__…

- #12387: DOC/STY: add example to scipy.signal.correlate

- #12393: CI: Replace the existing check for non-ASCII characters with…

- #12394: CI: arm64 numpy now available

- #12395: ENH: improve stats.binned_statistic_dd performance

- #12396: DOC, MAINT: forward port 1.5.0 relnotes

- #12398: API: Disable len() and indexing of Rotation instances with single…

- #12399: MAINT: Replace some Unicode dash-like chars with an ASCII hyphen.

- #12402: update .mailmap

- #12404: MAINT: io: Change the encoding comment of test_mio.py to utf-8.

- #12416: CI: cache mingw, azure pipelines

- #12427: BUG: logic error in loop unrolling (cKDTree)

- #12432: DOC: Remove the “Basic functions” section from the SciPy tutorial.

- #12434: ENH:linalg: Add LAPACK wrappers pptrf/pptrs/ppsv/pptri/ppcon

- #12435: DOC: fix simplex math for scipy.stats.dirichlet documentation

- #12439: DOC: add API methods summary for NdPPoly

- #12443: BUG: stats: Improve calculation of exponnorm.pdf

- #12448: DOC: stats: Add “Examples” to the ansari docstring.

- #12450: ENH: add `leaves_color_list` for cluster.dendrogram dictionary.

- #12451: MAINT: remove “blacklist” terminology from code base

- #12452: DOC: clarify the meaning of whitening for cluster.vq.whiten()

- #12455: MAINT: clearer error message in setup.py

- #12457: ENH: stats: override stats.pareto.fit with analytical MLE

- #12460: check if column in spearman rho is entirely NaN or Inf

- #12463: DOC: improve and clean up *Spline docstrings in fitpack2.py

- #12474: ENH: linalg: speedup _sqrtm_triu by moving tight loop to Cython

- #12476: ENH: add IIR comb filter to scipy.signal

- #12484: Fix documentation for minimize

- #12486: DOC: add a note in poisson distribution when mu=0 and k=0 in…

- #12491: MAINT: forward port 1.5.1 release notes

- #12508: Fix exception causes all over the codebase

- #12514: ENH: stats: override stats.invgauss.fit with analytical MLE

- #12519: PERF: Avoid np.zeros when custom initialization is needed anyway

- #12520: DOC: Minor RST section renaming.

- #12521: MAINT: Remove unused imports

- #12522: PERF: Get rid of unnececssary allocation in VarReader5.cread_fieldnames

- #12524: DOC: special: Set Axes3D rect to avoid clipping labels in plot.

- #12525: Fix large sparse nnz

- #12526: DOC: Remove double section and too long header underline.

- #12527: Improve error message for wrong interpolation type

- #12530: Move redundant logic outside loop for conditional speedup in…

- #12532: ENH: Add norm={“forward”, “backward”} to `scipy.fft`

- #12535: MAINT: Avoid sphinx deprecated aliases for SeeAlso and Only

- #12540: BUG: fix odr.output.work_ind key bug and add its test.

- #12541: ENH: add solver for minimum weight full bipartite matching

- #12550: PERF: pickling speed of rv*

- #12551: DOC: fix typo in cluster/_hierarchy.pyx

- #12552: CI: Cleanup travis pip installs

- #12556: BUG: Fix problem with Scipy.integrate.solve_bvp for big problems

- #12557: MAINT: Use extern templates to improve sparsetools compile time

- #12558: MAINT: Remove hack to allow scipy.fft to act like a function

- #12563: MAINT: Remove unused mu0 in special/orthogonal.py

- #12564: DOC: fix return type docstring for least_squares

- #12565: DOC: stats: respond to query about Kruskal-Wallis test being…

- #12566: BUG: Interpolate: use stable sort

- #12568: Updated documentation for as_quat

- #12571: DEP: remove deprecated slepian window

- #12573: DEP: remove `frechet_l` and `frechet_r`

- #12575: BUG: stats: fix multinomial.pmf NaNs when params sum > 1

- #12576: MAINT: remove warning from LSQSphereBivariateSpline

- #12582: ENH: Multivariate t-distribution

- #12587: ENH: speed up rvs of gengamma in scipy.stats

- #12588: DOC: add Examples add see also sections for LinearNDInterpolator,…

- #12597: ENH: Add single-sided p-values to t-tests

- #12599: Small update to scipy FFT tutorial

- #12600: ENH: disjoint set data structure

- #12602: BUG: add const for Read-only views in interpnd.pyx

- #12605: BUG: correct `np.asanyarray` use in `scipy.constants.lambda2nu`

- #12610: MAINT: forward port 1.5.2 release notes

- #12612: MAINT: stats: Use explicit keyword parameters instead of `**kwds`.

- #12616: DOC: make explicit docstring that interpolate.interp1d only accepts…

- #12618: DOC: Minor doc formatting.

- #12640: MAINT: stats: fix issues with scipy.stats.pearson3 docs, moment,…

- #12647: TST: Add Boost ellipr[cdfgj]_data test data

- #12648: DOC: Update special/utils/README with instructions

- #12649: DOC: simplified pip quickstart guide

- #12650: DOC: stats: Fix boxcox docstring: lambda can be negative.

- #12655: DOC: update Steering Council members listed in governance docs

- #12659: rv_sample expect bug

- #12663: DOC: optimize: try to fix linprog method-specific documentation

- #12664: BUG: stats: Fix logpdf with large negative values for logistic…

- #12666: MAINT: Fixes from static analysis

- #12667: ENH: Adding Modified Rodrigues Parameters to the Rotation class

- #12670: DOC: Update documentation for Gamma distribution

- #12673: API: Unconditionally return np.intp from cKDTree.query

- #12677: MAINT: Add Autogenerated notice to ufuncs.pyi

- #12682: MAINT: Remove _util._valarray

- #12688: MAINT: add f2py-generated scipy.integrate files to .gitignore

- #12689: BENCH: simplify benchmark setup, remove benchmarks/run.py

- #12694: scipy/stats: Add laplace_asymmetric continuous distribution

- #12695: DOC: update Ubuntu quickstart; conda compilers now work!

- #12698: MAINT: Replace np.max with np.maximum

- #12700: TST: bump test precision for constrained trustregion test

- #12702: TST: bump test tolerance for `DifferentialEvolutionSolver.test_L4`

- #12703: BUG: Improve input validation for sepfir2d

- #12708: MAINT: fix a typo in scipy.sparse

- #12709: BUG: bvls can fail catastrophically to converge

- #12711: MAINT: Use platform.python_implementation to determine IS_PYPY

- #12713: TST: Fix flaky test_lgmres

- #12716: DOC: add examples and tutorial links for interpolate functions…

- #12717: DOC: Fix Issue #5396

- #12725: ENH: Support complex-valued images and kernels for many ndimage…

- #12729: DEP: remove setup_requires

- #12732: BENCH: skip benchmarks instead of hiding them when SCIPY_XSLOW=0

- #12734: CI: Don’t ignore line-length in the lint_diff check.

- #12736: DOC: Fix signal.windows.get_window() ‘exponential’ docstring

- #12737: ENH: stats: override stats.gumbel_r.fit and stats.gumbel_l.fit…

- #12738: ENH: stats: override stats.logistic.fit with system of equations…

- #12743: BUG: Avoid negative variances in circular statistics

- #12744: Prevent build error on GNU/Hurd

- #12746: TST: parameterize the test cases in test_ndimage.py

- #12752: DOC: Add examples for some root finding functions.

- #12754: MAINT, CI: Azure windows deps multiline

- #12756: ENH: stats: Add an sf method to levy for improved precision in…

- #12757: ENH: stats: Add an sf method to levy_l for improved precision.

- #12765: TST, MAINT: infeasible_2 context

- #12767: Fix spline interpolation boundary handling for modes reflect…

- #12769: DOC: syntax error in scipy.interpolate.bspl

- #12770: ENH: add nearest-up rounding to scipy.interpolate.interp1d

- #12771: TST: fix invalid input unit test for scipy.signal.gammatone

- #12775: ENH: Adds quadratic_assignment with two methods

- #12776: ENH: add grid-constant boundary handling in ndimage interpolation…

- #12777: Add Taylor Window function - Common in Radar DSP

- #12779: ENH: Improvements to pocketfft thread pool and ARM neon vectorization

- #12788: API: Rename cKDTree n_jobs argument to workers

- #12792: DOC: remove THANKS.txt file in favor of scipy.org

- #12793: Add new flag to authors tool

- #12802: BENCH: add scipy.ndimage.interpolation benchmarks

- #12803: Do not pin the version of numpy in unsupported python versions

- #12810: CI: fix 32-bit Linux build failure on Azure CI runs

- #12812: ENH: support interpolation of complex-valued images

- #12814: BUG: nonlin_solve shouldn’t pass non-vector dx to tol_norm

- #12818: Update ckdtree.pyx

- #12822: MAINT: simplify directed_hausdorff

- #12827: DOC: Fix wrong name w being used instead of worN in docs.

- #12831: DOC: fix typo in sparse/base.py

- #12835: MAINT: stats: Improve vonmises PDF calculation.

- #12839: ENH: scipy.stats: add multivariate hypergeometric distribution

- #12843: changed M to N in windows.dpss

- #12846: MAINT: update minimum NumPy version to 1.16.5

- #12847: DOC: Unify the formula in docs of scipy.stats.pearsonr()

- #12849: DOC: polish QAP docs for consistency and readability

- #12852: ENH, MAINT: Bring KDTree interface to feature-parity with cKDTree

- #12858: DOC: use :doi: and :arxiv: directives for references

- #12872: lazily import multiprocessing.Pool in MapWrapper

- #12878: DOC: document ScalarFunction

- #12882: MAINT: stats: Change a test to use <= instead of strictly less…

- #12885: numpy.linspace calls edited to ensure correct spacing.

- #12886: DOC: stats: Add ‘versionadded’ to cramervonmises docstring.

- #12899: TST: make a couple of tests expected to fail on 32-bit architectures

- #12903: DOC: update Windows build guide and move into contributor guide

- #12907: DOC: clarify which array the precenter option applies to

- #12908: MAINT: spatial: Remove two occurrences of unused variables in…

- #12909: ENH: stats: Add methods gumbel_r._sf and gumbel_r._isf

- #12910: CI: travis: Remove some unnecessary code from .travis.yml.

- #12911: Minor fixes to dendrogram plotting

- #12921: CI: don’t run GitHub Actions on fork or in cron job

- #12927: MAINT: rename integrate.simps to simpson

- #12934: MAINT: rename trapz and cumtrapz to (cumulative_)trapezoid

- #12936: MAINT: fix numerical precision in nct.stats

- #12938: MAINT: fix linter on master

- #12941: Update minimum AIX pinnings to match non AIX builds

- #12955: BUG: Fixed wrong NaNs check in scipy.stats.weightedtau

- #12958: ENH: stats: Implement _logpdf, _sf and _isf for nakagami.

- #12962: Correcting that p should be in [0,1] for a variety of discrete…

- #12964: BUG: added line.strip() to split_data_line()

- #12968: ENH: stats: Use only an analytical formula or scalar root-finding…

- #12971: MAINT: Declare support for Python 3.9

- #12972: MAINT: Remove redundant Python < 3.6 code

- #12980: DOC: Update documentation on optimize.rosen

- #12983: ENH: improvements to stats.linregress

- #12990: DOC: Clarify that using sos as output type for iirdesign can…

- #12992: DOC: capitalization and formatting in lsmr

- #12995: DOC: stats: Several documentation fixes.

- #12996: BUG: Improve error messages for `range` arg of binned_statistic_dd

- #12998: MAINT: approx_derivative with FP32 closes #12991

- #13004: TST: isinstance(OptimizeResult.message, str) closes #13001

- #13006: Keep correct dtype when loading empty mat arrays.

- #13009: MAINT: clip SLSQP step within bounds

- #13012: DOC: fix bilinear_zpk example labels

- #13013: ENH: Add `subset` and `subsets` methods to `DisjointSet`…

- #13029: MAINT: basinhopping callback for initial mininmisation

- #13032: DOC: fix docstring errors in in stats.wilcoxon

- #13036: BUG: forward port lint_diff shims

- #13041: MAINT: dogbox ensure x is within bounds closes #11403

- #13042: MAINT: forward port 1.5.4 release notes

- #13046: DOC: Update optimize.least_squares doc for all tolerance must…

- #13052: Typo fix for cluster documentation

- #13054: BUG: fix `scipy.optimize.show_options` for unknown methods….

- #13056: MAINT: fft: Fix a C++ compiler warning.

- #13057: Minor fixes on doc of function csr_tocsc

- #13058: DOC: stats: Replace np.float with np.float64 in a tutorial file.

- #13059: DOC: stats: Update the “Returns” section of the linregress docstring.

- #13060: MAINT: clip_x_for_func should be private

- #13061: DOC: signal.win -> signal.windows.win in Examples

- #13063: MAINT: Add suite-sparse and sksparse installation check

- #13070: MAINT: stats: Remove a couple obsolete comments.

- #13073: BUG: Fix scalar_search_wolfe2 to resolve #12157

- #13078: CI, MAINT: migrate Lint to Azure

- #13081: BLD: drop Python 3.6 support (NEP 29)

- #13082: MAINT: update minimum NumPy version to 1.16.5 in a couple more…

- #13083: DOC: update toolchain.rst

- #13086: DOC: Update the Parameters section of the correlation docstring

- #13087: ENH:signal: Speed-up Cython implementation of _sosfilt

- #13089: BLD, BUG: add c99 compiler flag to HiGHS basiclu library

- #13091: BUG: Fix GIL handling in _sosfilt

- #13094: DOC: clarify “location” in docstring of cKDTree.query

- #13095: Zoom resize update

- #13097: BUG: fix CubicSpline(…, bc_type=”periodic”) #11758

- #13100: BUG: sparse: Correct output format of kron

- #13107: ENH: faster linear_sum_assignment for small cost matrices

- #13110: CI, MAINT: refguide/asv checks to azure

- #13112: CI: fix MacOS CI

- #13113: CI: Install word list package for refguide-check

- #13115: BUG: add value range check for signal.iirdesign()

- #13116: CI: Don’t report name errors after an exception in refguide-check

- #13117: CI: move sdist/pre-release test Azure

- #13119: Improve error message on friedmanchisquare function

- #13121: Fix factorial() for NaN on Python 3.10

- #13123: BLD: Specify file extension for language standard version tests

- #13128: TST: skip Fortran I/O test for ODR

- #13130: TST: skip factorial() float tests on Python 3.10

- #13136: CI:Add python dbg run to GH Actions

- #13138: CI: Port coverage, 64-bit BLAS, GCC 4.8 build to azure

- #13139: Fix edge case for mode=’nearest’ in ndimage.interpolation functions

- #13141: BUG: signal: Fix data type of the numerator returned by ss2tf.

- #13144: MAINT: stats: restrict gausshyper z > -1

- #13146: typo in csr.py

- #13148: BUG: stats: fix typo in stable rvs per gh-12870

- #13149: DOC: spatial/stats: cross-ref random rotation matrix functions

- #13151: MAINT: stats: Fix a test and a couple PEP-8 issues.

- #13152: MAINT: stats: Use np.take_along_axis in the private function…

- #13154: ENH: stats: Implement defined handling of constant inputs in…

- #13156: DOC: maintain equal display range for ndimage.zoom example

- #13159: CI: Azure: Don’t run tests on merge commits, except for coverage

- #13160: DOC: stats: disambiguate location-shifted/noncentral

- #13161: BUG: DifferentialEvolutionSolver.__del__ can fail in garbage…

- #13163: BUG: stats: fix bug in spearmanr nan propagation

- #13167: MAINT: stats: Fix a test.

- #13169: BUG: stats: Fix handling of misaligned masks in mstats.pearsonr.

- #13178: CI: testing.yml –> macos.yml

- #13181: CI: fix lint

- #13190: BUG: optimize: fix a duplicate key bug for `test_show_options`

- #13192: BUG:linalg: Add overwrite option to gejsv wrapper

- #13194: BUG: slsqp should be able to use rel_step

- #13199: [skip travis] DOC: 1.6.0 release notes

- #13203: fix typos

- #13209: TST:linalg: set the seed for cossin test

- #13212: [DOC] Backtick and directive consistency.

- #13217: REL: add necessary setuptools and numpy version pins in pyproject.toml…

- #13226: BUG: pavement.py file handle fixes

- #13249: Handle cval correctly for ndimage functions with complex-valued…

- #13253: BUG,MAINT: Ensure all Pool objects are closed

- #13255: BUG:linalg: Fix heevx wrappers and add new tests

- #13260: CI: fix macOS testing

- #13269: CI: github actions: In the linux dbg tests, update apt before…

- #13279: MAINT: 1.6.0 rc2 backports

SciPy 1.6.1 Release Notes SciPy 1.5.4 Release Notes