SciPy 1.4.0 Release Notes

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

This release requires Python 3.5+ and NumPy >=1.13.3 (for Python 3.5, 3.6), >=1.14.5 (for Python 3.7), >= 1.17.3 (for Python 3.8)

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • a new submodule, scipy.fft, now supersedes scipy.fftpack; this means support for long double transforms, faster multi-dimensional transforms, improved algorithm time complexity, release of the global intepreter lock, and control over threading behavior

  • support for pydata/sparse arrays in scipy.sparse.linalg

  • substantial improvement to the documentation and functionality of several scipy.special functions, and some new additions

  • the generalized inverse Gaussian distribution has been added to scipy.stats

  • an implementation of the Edmonds-Karp algorithm in scipy.sparse.csgraph.maximum_flow

  • scipy.spatial.SphericalVoronoi now supports n-dimensional input,

    has linear memory complexity, improved performance, and supports single-hemisphere generators

Infrastructure

Documentation can now be built with runtests.py --doc

A Dockerfile is now available in the scipy/scipy-dev repository to facilitate getting started with SciPy development.

scipy.constants improvements

scipy.constants has been updated with the CODATA 2018 constants.

scipy.fft added

scipy.fft is a new submodule that supersedes the scipy.fftpack submodule. For the most part, this is a drop-in replacement for numpy.fft and scipy.fftpack alike. With some important differences, scipy.fft: - uses NumPy’s conventions for real transforms (rfft). This means the return value is a complex array, half the size of the full fft output. This is different from the output of fftpack which returned a real array representing complex components packed together. - the inverse real to real transforms (idct and idst) are normalized for norm=None in thesame way as ifft. This means the identity idct(dct(x)) == x is now True for all norm modes. - does not include the convolutions or pseudo-differential operators from fftpack.

This submodule is based on the pypocketfft library, developed by the author of pocketfft which was recently adopted by NumPy as well. pypocketfft offers a number of advantages over fortran FFTPACK: - support for long double (np.longfloat) precision transforms. - faster multi-dimensional transforms using vectorisation - Bluestein’s algorithm removes the worst-case O(n^2) complexity of FFTPACK - the global interpreter lock (GIL) is released during transforms - optional multithreading of multi-dimensional transforms via the workers argument

Note that scipy.fftpack has not been deprecated and will continue to be maintained but is now considered legacy. New code is recommended to use scipy.fft instead, where possible.

scipy.fftpack improvements

scipy.fftpack now uses pypocketfft to perform its FFTs, offering the same speed and accuracy benefits listed for scipy.fft above but without the improved API.

scipy.integrate improvements

The function scipy.integrate.solve_ivp now has an args argument. This allows the user-defined functions passed to the function to have additional parameters without having to create wrapper functions or lambda expressions for them.

scipy.integrate.solve_ivp can now return a y_events attribute representing the solution of the ODE at event times

New OdeSolver is implemented — DOP853. This is a high-order explicit Runge-Kutta method originally implemented in Fortran. Now we provide a pure Python implementation usable through solve_ivp with all its features.

scipy.integrate.quad provides better user feedback when break points are specified with a weighted integrand.

scipy.integrate.quad_vec is now available for general purpose integration of vector-valued functions

scipy.interpolate improvements

scipy.interpolate.pade now handles complex input data gracefully

scipy.interpolate.Rbf can now interpolate multi-dimensional functions

scipy.io improvements

scipy.io.wavfile.read can now read data from a WAV file that has a malformed header, similar to other modern WAV file parsers

scipy.io.FortranFile now has an expanded set of available Exception classes for handling poorly-formatted files

scipy.linalg improvements

The function scipy.linalg.subspace_angles(A, B) now gives correct results for complex-valued matrices. Before this, the function only returned correct values for real-valued matrices.

New boolean keyword argument check_finite for scipy.linalg.norm; whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

scipy.linalg.solve_triangular has improved performance for a C-ordered triangular matrix

LAPACK wrappers have been added for ?geequ, ?geequb, ?syequb, and ?heequb

Some performance improvements may be observed due to an internal optimization in operations involving LAPACK routines via _compute_lwork. This is particularly true for operations on small arrays.

Block QR wrappers are now available in scipy.linalg.lapack

scipy.ndimage improvements

scipy.optimize improvements

It is now possible to use linear and non-linear constraints with scipy.optimize.differential_evolution.

scipy.optimize.linear_sum_assignment has been re-written in C++ to improve performance, and now allows input costs to be infinite.

A ScalarFunction.fun_and_grad method was added for convenient simultaneous retrieval of a function and gradient evaluation

scipy.optimize.minimize BFGS method has improved performance by avoiding duplicate evaluations in some cases

Better user feedback is provided when an objective function returns an array instead of a scalar.

scipy.signal improvements

Added a new function to calculate convolution using the overlap-add method, named scipy.signal.oaconvolve. Like scipy.signal.fftconvolve, this function supports specifying dimensions along which to do the convolution.

scipy.signal.cwt now supports complex wavelets.

The implementation of choose_conv_method has been updated to reflect the new FFT implementation. In addition, the performance has been significantly improved (with rather drastic improvements in edge cases).

The function upfirdn now has a mode keyword argument that can be used to select the signal extension mode used at the signal boundaries. These modes are also available for use in resample_poly via a newly added padtype argument.

scipy.signal.sosfilt now benefits from Cython code for improved performance

scipy.signal.resample should be more efficient by leveraging rfft when possible

scipy.sparse improvements

It is now possible to use the LOBPCG method in scipy.sparse.linalg.svds.

scipy.sparse.linalg.LinearOperator now supports the operation rmatmat for adjoint matrix-matrix multiplication, in addition to rmatvec.

Multiple stability updates enable float32 support in the LOBPCG eigenvalue solver for symmetric and Hermitian eigenvalues problems in scipy.sparse.linalg.lobpcg.

A solver for the maximum flow problem has been added as scipy.sparse.csgraph.maximum_flow.

scipy.sparse.csgraph.maximum_bipartite_matching now allows non-square inputs, no longer requires a perfect matching to exist, and has improved performance.

scipy.sparse.lil_matrix conversions now perform better in some scenarios

Basic support is available for pydata/sparse arrays in scipy.sparse.linalg

scipy.sparse.linalg.spsolve_triangular now supports the unit_diagonal argument to improve call signature similarity with its dense counterpart, scipy.linalg.solve_triangular

assertAlmostEqual may now be used with sparse matrices, which have added support for __round__

scipy.spatial improvements

The bundled Qhull library was upgraded to version 2019.1, fixing several issues. Scipy-specific patches are no longer applied to it.

scipy.spatial.SphericalVoronoi now has linear memory complexity, improved performance, and supports single-hemisphere generators. Support has also been added for handling generators that lie on a great circle arc (geodesic input) and for generators in n-dimensions.

scipy.spatial.transform.Rotation now includes functions for calculation of a mean rotation, generation of the 3D rotation groups, and reduction of rotations with rotational symmetries.

scipy.spatial.transform.Slerp is now callable with a scalar argument

scipy.spatial.voronoi_plot_2d now supports furthest site Voronoi diagrams

scipy.spatial.Delaunay and scipy.spatial.Voronoi now have attributes for tracking whether they are furthest site diagrams

scipy.special improvements

The Voigt profile has been added as scipy.special.voigt_profile.

A real dispatch has been added for the Wright Omega function (scipy.special.wrightomega).

The analytic continuation of the Riemann zeta function has been added. (The Riemann zeta function is the one-argument variant of scipy.special.zeta.)

The complete elliptic integral of the first kind (scipy.special.ellipk) is now available in scipy.special.cython_special.

The accuracy of scipy.special.hyp1f1 for real arguments has been improved.

The documentation of many functions has been improved.

scipy.stats improvements

scipy.stats.multiscale_graphcorr added as an independence test that operates on high dimensional and nonlinear data sets. It has higher statistical power than other scipy.stats tests while being the only one that operates on multivariate data.

The generalized inverse Gaussian distribution (scipy.stats.geninvgauss) has been added.

It is now possible to efficiently reuse scipy.stats.binned_statistic_dd with new values by providing the result of a previous call to the function.

scipy.stats.hmean now handles input with zeros more gracefully.

The beta-binomial distribution is now available in scipy.stats.betabinom.

scipy.stats.zscore, scipy.stats.circmean, scipy.stats.circstd, and scipy.stats.circvar now support the nan_policy argument for enhanced handling of NaN values

scipy.stats.entropy now accepts an axis argument

scipy.stats.gaussian_kde.resample now accepts a seed argument to empower reproducibility

scipy.stats.kendalltau performance has improved, especially for large inputs, due to improved cache usage

scipy.stats.truncnorm distribution has been rewritten to support much wider tails

scipy deprecations

Support for NumPy functions exposed via the root SciPy namespace is deprecated and will be removed in 2.0.0. For example, if you use scipy.rand or scipy.diag, you should change your code to directly use numpy.random.default_rng or numpy.diag, respectively. They remain available in the currently continuing Scipy 1.x release series.

The exception to this rule is using scipy.fft as a function – scipy.fft is now meant to be used only as a module, so the ability to call scipy.fft(...) will be removed in SciPy 1.5.0.

In scipy.spatial.Rotation methods from_dcm, as_dcm were renamed to from_matrix, as_matrix respectively. The old names will be removed in SciPy 1.6.0.

Method Rotation.match_vectors was deprecated in favor of Rotation.align_vectors, which provides a more logical and general API to the same functionality. The old method will be removed in SciPy 1.6.0.

scipy.special changes

The deprecated functions hyp2f0, hyp1f2, and hyp3f0 have been removed.

The deprecated function bessel_diff_formula has been removed.

The function i0 is no longer registered with numpy.dual, so that numpy.dual.i0 will unconditionally refer to the NumPy version regardless of whether scipy.special is imported.

The function expn has been changed to return nan outside of its domain of definition (x, n < 0) instead of inf.

scipy.sparse changes

Sparse matrix reshape now raises an error if shape is not two-dimensional, rather than guessing what was meant. The behavior is now the same as before SciPy 1.1.0.

CSR and CSC sparse matrix classes should now return empty matrices of the same type when indexed out of bounds. Previously, for some versions of SciPy, this would raise an IndexError. The change is largely motivated by greater consistency with ndarray and numpy.matrix semantics.

scipy.signal changes

scipy.signal.resample behavior for length-1 signal inputs has been fixed to output a constant (DC) value rather than an impulse, consistent with the assumption of signal periodicity in the FFT method.

scipy.signal.cwt now performs complex conjugation and time-reversal of wavelet data, which is a backwards-incompatible bugfix for time-asymmetric wavelets.

scipy.stats changes

scipy.stats.loguniform added with better documentation as (an alias for scipy.stats.reciprocal). loguniform generates random variables that are equally likely in the log space; e.g., 1, 10 and 100 are all equally likely if loguniform(10 ** 0, 10 ** 2).rvs() is used.

Other changes

The LSODA method of scipy.integrate.solve_ivp now correctly detects stiff problems.

scipy.spatial.cKDTree now accepts and correctly handles empty input data

scipy.stats.binned_statistic_dd now calculates the standard deviation statistic in a numerically stable way.

scipy.stats.binned_statistic_dd now throws an error if the input data contains either np.nan or np.inf. Similarly, in scipy.stats now all continuous distributions’ .fit() methods throw an error if the input data contain any instance of either np.nan or np.inf.

Authors

  • @endolith

  • @wenhui-prudencemed +

  • Abhinav +

  • Anne Archibald

  • ashwinpathak20nov1996 +

  • Danilo Augusto +

  • Nelson Auner +

  • aypiggott +

  • Christoph Baumgarten

  • Peter Bell

  • Sebastian Berg

  • Arman Bilge +

  • Benedikt Boecking +

  • Christoph Boeddeker +

  • Daniel Bunting

  • Evgeni Burovski

  • Angeline Burrell +

  • Angeline G. Burrell +

  • CJ Carey

  • Carlos Ramos Carreño +

  • Mak Sze Chun +

  • Malayaja Chutani +

  • Christian Clauss +

  • Jonathan Conroy +

  • Stephen P Cook +

  • Dylan Cutler +

  • Anirudh Dagar +

  • Aidan Dang +

  • dankleeman +

  • Brandon David +

  • Tyler Dawson +

  • Dieter Werthmüller

  • Joe Driscoll +

  • Jakub Dyczek +

  • Dávid Bodnár

  • Fletcher Easton +

  • Stefan Endres

  • etienne +

  • Johann Faouzi

  • Yu Feng

  • Isuru Fernando +

  • Matthew H Flamm

  • Martin Gauch +

  • Gabriel Gerlero +

  • Ralf Gommers

  • Chris Gorgolewski +

  • Domen Gorjup +

  • Edouard Goudenhoofdt +

  • Jan Gwinner +

  • Maja Gwozdz +

  • Matt Haberland

  • hadshirt +

  • Pierre Haessig +

  • David Hagen

  • Charles Harris

  • Gina Helfrich +

  • Alex Henrie +

  • Francisco J. Hernandez Heras +

  • Andreas Hilboll

  • Lindsey Hiltner

  • Thomas Hisch

  • Min ho Kim +

  • Gert-Ludwig Ingold

  • jakobjakobson13 +

  • Todd Jennings

  • He Jia

  • Muhammad Firmansyah Kasim +

  • Andrew Knyazev +

  • Holger Kohr +

  • Mateusz Konieczny +

  • Krzysztof Pióro +

  • Philipp Lang +

  • Peter Mahler Larsen +

  • Eric Larson

  • Antony Lee

  • Gregory R. Lee

  • Chelsea Liu +

  • Jesse Livezey

  • Peter Lysakovski +

  • Jason Manley +

  • Michael Marien +

  • Nikolay Mayorov

      1. McBain +

  • Sam McCormack +

  • Melissa Weber Mendonça +

  • Kevin Michel +

  • mikeWShef +

  • Sturla Molden

  • Eric Moore

  • Peyton Murray +

  • Andrew Nelson

  • Clement Ng +

  • Juan Nunez-Iglesias

  • Renee Otten +

  • Kellie Ottoboni +

  • Ayappan P

  • Sambit Panda +

  • Tapasweni Pathak +

  • Oleksandr Pavlyk

  • Fabian Pedregosa

  • Petar Mlinarić

  • Matti Picus

  • Marcel Plch +

  • Christoph Pohl +

  • Ilhan Polat

  • Siddhesh Poyarekar +

  • Ioannis Prapas +

  • James Alan Preiss +

  • Yisheng Qiu +

  • Eric Quintero

  • Bharat Raghunathan +

  • Tyler Reddy

  • Joscha Reimer

  • Antonio Horta Ribeiro

  • Lucas Roberts

  • rtshort +

  • Josua Sassen

  • Kevin Sheppard

  • Scott Sievert

  • Leo Singer

  • Kai Striega

  • Søren Fuglede Jørgensen

  • tborisow +

  • Étienne Tremblay +

  • tuxcell +

  • Miguel de Val-Borro

  • Andrew Valentine +

  • Hugo van Kemenade

  • Paul van Mulbregt

  • Sebastiano Vigna

  • Pauli Virtanen

  • Dany Vohl +

  • Ben Walsh +

  • Huize Wang +

  • Warren Weckesser

  • Anreas Weh +

  • Joseph Weston +

  • Adrian Wijaya +

  • Timothy Willard +

  • Josh Wilson

  • Kentaro Yamamoto +

  • Dave Zbarsky +

A total of 142 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.4.0

  • #1255: maxiter broken for Scipy.sparse.linalg gmres, in addition to…

  • #1301: consolidate multipack.h from interpolate and integrate packages…

  • #1739: Single precision FFT insufficiently accurate. (Trac #1212)

  • #1795: stats test_distributions.py: replace old fuzz tests (Trac #1269)

  • #2233: fftpack segfault with big arrays (Trac #1714)

  • #2434: rmatmat and the sophistication of linear operator objects

  • #2477: stats.truncnorm.rvs() does not give symmetric results for negative…

  • #2629: FFTpack is unacceptably slow on non power of 2

  • #2883: UnboundLocalError in scipy.interpolate.splrep

  • #2956: Feature Request: axis argument for stats.entropy function

  • #3528: Segfault on test_djbfft (possibly MKL-related?)

  • #3793: cwt should also return complex array

  • #4464: TST: residue/residuez/invres/invresz don’t have any tests

  • #4561: BUG: tf filter trailing and leading zeros in residuez

  • #4669: Rewrite sosfilt to make a single loop over the input?

  • #5040: BUG: Empty data handling of (c)KDTrees

  • #5112: boxcox transform edge cases could use more care

  • #5441: scipy.stats.ncx2 fails for nc=0

  • #5502: args keyword not handled in optimize.curve_fit

  • #6484: Qhull segmentation fault

  • #6900: linear_sum_assignment with infinite weights

  • #6966: Hypergeometric Functions documentation is lacking

  • #6999: possible false positive corruption check in compressed loadmat()

  • #7018: ydata that needs broadcasting renders curve_fit unable to compute…

  • #7140: trouble with documentation for windows

  • #7327: interpolate.ndgriddata.griddata causes Python to crash rather…

  • #7396: MatrixLinearOperator implements _adjoint(), but not _transpose()

  • #7400: BUG(?): special: factorial and factorial2 return a 0-dimensional…

  • #7434: Testing of scipy.stats continuous distributions misses 25 distributions

  • #7491: Several scipy.stats distributions (fisk, burr, burr12, f) return…

  • #7759: Overflow in stats.kruskal for large samples

  • #7906: Wrong result from scipy.interpolate.UnivariateSpline.integral…

  • #8165: ENH: match functionality of R for hmean

  • #8417: optimimze.minimize(method=’L-BFGS-B’, options={‘disp’: True})…

  • #8535: Strictly increasing requirement in UnivariateSpline

  • #8815: [BUG] GMRES: number of iteration is only increased if callback…

  • #9207: scipy.linalg.solve_triangular speed after scipy.linalg.lu_factor

  • #9275: new feature: adding LOBPCG solver in svds in addition to ARPACK

  • #9403: range of truncnorm.logpdf could be extended

  • #9429: gaussian_kde not working with numpy matrix

  • #9515: ndimage implementation relies on undefined behavior

  • #9643: arpack returns singular values in ascending order

  • #9669: DOC: matthew-brett/build-openblas has been retired

  • #9852: scipy.spatial.ConvexHull exit with code 134, free(): invalid…

  • #9902: scipy.stats.truncnorm second moment may be wrong

  • #9943: Custom sampling methods in shgo do not work

  • #9947: DOC: Incorrect documentation for `nan_policy=’propagate` in…

  • #9994: BUG: sparse: reshape method allows a shape containing an arbitrary…

  • #10036: Official Nelder mead tutorial uses xtol instead of xatol, which…

  • #10078: possible to get a better error message when objective function…

  • #10092: overflow in truncnorm.rvs

  • #10121: A little spelling mistake

  • #10126: inaccurate std implementation in binned_statistic

  • #10161: Error in documentation scipy.special.modstruve

  • #10195: Derivative of spline with ‘const’ extrapolation is also extrapolted…

  • #10206: sparse matrices indexing with scipy 1.3

  • #10236: Non-descriptive error on type mismatch for functions of scipy.optimize…

  • #10258: LOBPCG convergence failure if guess provided

  • #10262: distance matrix lacks dtype checks / warnings

  • #10271: BUG: optimize failure on wheels

  • #10277: scipy.special.zeta(0) = NAN

  • #10292: DOC/REL: Some sections of the release notes are not nested correctly.

  • #10300: scipy.stats.rv_continuous.fit throws empty RuntimeError when…

  • #10319: events in scipy.integrate.solve_ivp: How do I setup an events…

  • #10323: Adding more low-level LAPACK wrappers

  • #10360: firwin2 inadvertently modifies input and may result in undefined…

  • #10388: BLD: TestHerd::test_hetrd core dumps with Python-dbg

  • #10395: Remove warning about output shape of zoom

  • #10403: DOC: scipy.signal.resample ignores t parameter

  • #10421: Yeo-Johnson power transformation fails with integer input data

  • #10422: BUG: scipy.fft does not support multiprocessing

  • #10427: ENH: convolve numbers should be updated

  • #10444: BUG: scipy.spatial.transform.Rotation.match_vectors returns improper…

  • #10488: ENH: DCTs/DSTs for scipy.fft

  • #10501: BUG: scipy.spatial.HalfspaceIntersection works incorrectly

  • #10514: BUG: cKDTree GIL handling is incorrect

  • #10535: TST: master branch CI failures

  • #10588: scipy.fft and numpy.fft inconsistency when axes=None and shape…

  • #10628: Scipy python>3.6 Windows wheels don’t ship msvcp*.dll

  • #10733: DOC/BUG: min_only result does not match documentation

  • #10774: min_only=true djisktra infinite loop with duplicate indices

  • #10775: UnboundLocalError in Radau when given a NaN

  • #10835: io.wavfile.read unnecessarily raises an error for a bad wav header

  • #10838: Error in documentation for scipy.linalg.lu_factor

  • #10875: DOC: Graphical guides (using TikZ)

  • #10880: setting verbose > 2 in minimize with trust-constr method leads…

  • #10887: scipy.signal.signaltools._fftconv_faster has incorrect estimates

  • #10948: gammainc(0,x) = nan but should be 1, gammaincc(0,x) = nan but…

  • #10952: TestQRdelete_F.test_delete_last_p_col test failure

  • #10968: API: Change normalized=False to normalize=True in Rotation

  • #10987: Memory leak in shgo triangulation

  • #10991: Error running openBlas probably missing a step

  • #11033: deadlock on osx for python 3.8

  • #11041: Test failure in wheel builds for TestTf2zpk.test_simple

  • #11089: Regression in scipy.stats where distribution will not accept loc and scale parameters

  • #11100: BUG: multiscale_graphcorr random state seeding and parallel use

  • #11121: Calls to scipy.interpolate.splprep increase RAM usage.

  • #11125: BUG: segfault when slicing a CSR or CSC sparse matrix with slice start index > stop index

  • #11198: BUG: sparse eigs (arpack) shift-invert drops the smallest eigenvalue for some k

Pull requests for 1.4.0

  • #4591: BUG, TST: Several issues with scipy.signal.residue

  • #6629: ENH: sparse: canonicalize on initialization

  • #7076: ENH: add complex wavelet support to scipy.signal.cwt.

  • #8681: ENH add generalized inverse Gaussian distribution to scipy.stats

  • #9064: BUG/ENH: Added default _transpose into LinearOperator. Fixes…

  • #9215: ENH: Rbf interpolation of large multi-dimensional data

  • #9311: ENH: Added voigt in scipy.special.

  • #9642: ENH: integrate: quad() for vector-valued functions

  • #9679: DOC: expand docstring of exponweib distribution

  • #9684: TST: add ppc64le ci testing

  • #9800: WIP : ENH: Refactored _hungarian.py for speed and added a minimize/maximize…

  • #9847: DOC: Change integrate tutorial to use solve_ivp instead of odeint

  • #9876: ENH: Use rfft when possible in resampling

  • #9998: BUG: Do not remove 1s when calling sparse: reshape method #9994

  • #10002: ENH: adds constraints for differential evolution

  • #10098: ENH: integrate: add args argument to solve_ivp.

  • #10099: DOC: Add missing docs for linprog unknown_options

  • #10104: BUG: Rewrite of stats.truncnorm distribution.

  • #10105: MAINT improve efficiency of rvs_ratio_uniforms in scipy.stats

  • #10107: TST: dual_annealing set seed

  • #10108: ENH: stats: improve kendall_tau cache usage

  • #10110: MAINT: _lib: Fix a build warning.

  • #10114: FIX: only print bounds when supported by minimizer (shgo)

  • #10115: TST: Add a test with an almost singular design matrix for lsq_linear

  • #10118: MAINT: fix rdist methods in scipy.stats

  • #10119: MAINT: improve rvs of randint in scipy.stats

  • #10127: Fix typo in record array field name (spatial-ckdtree-sparse_distance…

  • #10130: MAINT: ndimage: Fix some compiler warnings.

  • #10131: DOC: Note the solve_ivp args enhancement in the 1.4.0 release…

  • #10133: MAINT: add rvs for semicircular in scipy.stats

  • #10138: BUG: special: Invalid arguments to ellip_harm can crash Python.

  • #10139: MAINT: spatial: Fix some compiler warnings in the file distance_wrap.c.

  • #10140: ENH: add handling of NaN in RuntimeWarning except clause

  • #10142: DOC: return value of scipy.special.comb

  • #10143: MAINT: Loosen linprog tol

  • #10152: BUG: Fix custom sampling input for shgo, add unittest

  • #10154: MAINT: add moments and improve doc of mielke in scipy.stats

  • #10158: Issue #6999: read zlib checksum before checking bytes read.

  • #10166: BUG: Correctly handle broadcasted ydata in curve_fit pcov computation.

  • #10167: DOC: special: Add missing factor of `i` to `modstruve` docstring

  • #10168: MAINT: stats: Fix an incorrect comment.

  • #10169: ENH: optimize: Clarify error when objective function returns…

  • #10172: DEV: Run tests in parallel when –parallel flag is passed to…

  • #10173: ENH: Implement DOP853 ODE integrator

  • #10176: Fixed typo

  • #10182: TST: fix test issue for stats.pearsonr

  • #10184: MAINT: stats: Simplify zmap and zscore (we can use keepdims now).

  • #10191: DOC: fix a formatting issue in the scipy.spatial module docstring.

  • #10193: DOC: Updated docstring for optimize.nnls

  • #10198: DOC, ENH: special: Make `hyp2f1` references more specific

  • #10202: DOC: Format DST and DCT definitions as latex equations

  • #10207: BUG: Compressed matrix indexing should return a scalar

  • #10210: DOC: Update docs for connection=’weak’ in connected_components

  • #10225: DOC: Clarify new interfaces for legacy functions in ‘optimize’

  • #10231: DOC, MAINT: gpg2 updates to release docs / pavement

  • #10235: LICENSE: split license file in standard BSD 3-clause and bundled.

  • #10238: ENH: Add new scipy.fft module using pocketfft

  • #10243: BUG: fix ARFF reader regression with quoted values.

  • #10248: DOC: update README file

  • #10255: CI: bump OpenBLAS to match wheels

  • #10264: TST: add tests for stats.tvar with unflattened arrays

  • #10280: MAINT: stats: Use a constant value for sqrt(2/PI).

  • #10286: Development Documentation Overhaul

  • #10290: MAINT: Deprecate NumPy functions in SciPy root

  • #10291: FIX: Avoid importing xdist when checking for availability

  • #10295: Disable deprecated Numpy API in __odrpack.c

  • #10296: ENH: C++ extension for linear assignment problem

  • #10298: ENH: Made pade function work with complex inputs

  • #10301: DOC: Fix critical value significance levels in stats.anderson_ksamp

  • #10307: Minkowski Distance Type Fix (issue #10262)

  • #10309: BUG: Pass jac=None directly to lsoda

  • #10310: BUG: interpolate: UnivariateSpline.derivative.ext is ‘zeros’…

  • #10312: FIX: Fixing a typo in a comment

  • #10314: scipy.spatial enhancement request

  • #10315: DOC: Update integration tutorial to solve_ivp

  • #10318: DOC: update the example for PPoly.solve

  • #10333: TST: add tests for stats.tvar with unflattened arrays

  • #10334: MAINT: special: Remove deprecated `hyp2f0`, `hyp1f2`, and…

  • #10336: BUG: linalg/interpolative: fix interp_decomp modifying input

  • #10341: BUG: sparse.linalg/gmres: deprecate effect of callback on semantics…

  • #10344: DOC: improve wording of mathematical formulation

  • #10345: ENH: Tiled QR wrappers for scipy.linalg.lapack

  • #10350: MAINT: linalg: Use the new fft subpackage in linalg.dft test…

  • #10351: BUG: Fix unstable standard deviation calculation in histogram

  • #10353: Bug: interpolate.NearestNDInterpolator (issue #10352)

  • #10357: DOC: linalg: Refer to scipy.fft.fft (not fftpack) in the dft…

  • #10359: DOC: Update roadmap now scipy.fft has been merged

  • #10361: ENH: Prefer scipy.fft to scipy.fftpack in scipy.signal

  • #10371: DOC: Tweaks to fft documentation

  • #10372: DOC: Fix typos

  • #10377: TST, MAINT: adjustments for pytest 5.0

  • #10378: ENH: _lib: allow new np.random.Generator in check_random_state

  • #10379: BUG: sparse: set writeability to be forward-compatible with numpy>=1.17

  • #10381: BUG: Fixes gh-7491, pdf at x=0 of fisk/burr/burr12/f distributions.

  • #10387: ENH: optimize/bfgs: don’t evaluate twice at initial point for…

  • #10392: [DOC] Add an example for _binned_statistic_dd

  • #10396: Remove warning about output shape of zoom

  • #10397: ENH: Add check_finite to sp.linalg.norm

  • #10399: ENH: Add __round__ method to sparse matrix

  • #10407: MAINT: drop pybind11 from install_requires, it’s only build-time…

  • #10408: TST: use pytest.raises, not numpy assert_raises

  • #10409: CI: uninstall nose on Travis

  • #10410: [ENH] ncx2 dispatch to chi2 when nc=0

  • #10411: TST: optimize: test should use assert_allclose for fp comparisons

  • #10414: DOC: add pybind11 to the other part of quickstart guides

  • #10417: DOC: special: don’t mark non-ufuncs with a `[+]`

  • #10423: FIX: Use pybind11::isinstace to check array dtypes

  • #10424: DOC: add doctest example for binary data for ttest_ind_from_stats

  • #10425: ENH: Add missing Hermitian transforms to scipy.fft

  • #10426: MAINT: Fix doc build bugs

  • #10431: Update numpy version for AIX

  • #10433: MAINT: Minor fixes for the stats

  • #10434: BUG: special: make `ndtri` return NaN outside domain of definition

  • #10435: BUG: Allow integer input data in scipy.stats.yeojohnson

  • #10438: [DOC] Add example for kurtosis

  • #10440: ENH: special: make `ellipk` a ufunc

  • #10443: MAINT: ndimage: malloc fail check

  • #10447: BLD: Divert output from test compiles into a temporary directory

  • #10451: MAINT: signal: malloc fail check

  • #10455: BUG: special: fix values of `hyperu` for negative `x`

  • #10456: DOC: Added comment clarifying the call for dcsrch.f in lbfgsb.f

  • #10457: BUG: Allow ckdtree to accept empty data input

  • #10459: BUG:TST: Compute lwork safely

  • #10460: [DOC] Add example to entropy

  • #10461: DOC: Quickstart Guide updates

  • #10462: TST: special: only show max atol/rtol for test points that failed

  • #10465: BUG: Correctly align fft inputs

  • #10467: ENH: lower-memory duplicate generator checking in spatial.SphericalVoronoi

  • #10470: ENH: Normalise the inverse DCT/DST in scipy.fft

  • #10472: BENCH: adjust timeout for slow setup_cache

  • #10475: CI: include python debug for Travis-ci

  • #10476: TST: special: use `__tracebackhide__` to get better error messages

  • #10477: ENH: faster region building in spatial.SphericalVoronoi

  • #10479: BUG: stats: Fix a few issues with the distributions’ fit method.

  • #10480: Add RuntimeError in _distn_infrastructure.py in fit() method

  • #10481: BENCH, MAINT: wheel_cache_size has been renamed build_cache_size

  • #10494: ENH: faster circumcenter calculation in spatial.SphericalVoronoi

  • #10500: Splrep _curfit_cache global variable bugfix

  • #10503: BUG: spatial/qhull: get HalfspaceIntersection.dual_points from…

  • #10506: DOC: interp2d, note nearest neighbor extrapolation

  • #10507: MAINT: Remove fortran fftpack library in favour of pypocketfft

  • #10508: TST: fix a bug in the circular import test.

  • #10509: MAINT: Set up _build_utils as subpackage

  • #10516: BUG: Use nogil contexts in cKDTree

  • #10517: ENH: fftconvolve should not FFT broadcastable axes

  • #10518: ENH: Speedup fftconvolve

  • #10520: DOC: Proper .rst formatting for deprecated features and Backwards…

  • #10523: DOC: Improve scipy.signal.resample documentation

  • #10524: ENH: Add MGC to scipy.stats

  • #10525: [ENH] ncx2.ppf dispatch to chi2 when nc=0

  • #10526: DOC: clarify laplacian normalization

  • #10528: API: Rename scipy.fft DCT/DST shape argument to s

  • #10531: BUG: fixed improper rotations in spatial.transform.rotation.match_vectors

  • #10533: [DOC] Add example for winsorize function

  • #10539: MAINT: special: don’t register `i0` with `numpy.dual`

  • #10540: MAINT: Fix Travis and Circle

  • #10542: MAINT: interpolate: use cython_lapack

  • #10547: Feature request. Add furthest site Voronoi diagrams to scipy.spatial.plotutils.

  • #10549: [BUG] Fix bug in trimr when inclusive=False

  • #10552: add scipy.signal.upfirdn signal extension modes

  • #10555: MAINT: special: move `c_misc` into Cephes

  • #10556: [DOC] Add example for trima

  • #10562: [DOC] Fix triple string fo trimmed so that __doc__ can show…

  • #10563: improve least_squares error msg for mismatched shape

  • #10564: ENH: linalg: memoize get_lapack/blas_funcs to speed it up

  • #10566: ENH: add implementation of solver for the maximum flow problem

  • #10567: BUG: spatial: use c++11 construct for getting start of vector…

  • #10568: DOC: special: small tweaks to the `zetac` docstring

  • #10571: [ENH] Gaussian_kde can accept matrix dataset

  • #10574: ENH: linalg: speed up _compute_lwork by avoiding numpy constructs

  • #10582: Fix typos with typos in bundled libraries reverted

  • #10583: ENH: special: add the analytic continuation of Riemann zeta

  • #10584: MAINT: special: clean up `special.__all__`

  • #10586: BUG: multidimensional scipy.fft functions should accept ‘s’ rather…

  • #10587: BUG: integrate/lsoda: never abort run, set error istate instead

  • #10594: API: Replicate numpy’s fftn behaviour when s is given but not…

  • #10599: DOC: dev: update documentation vs. github pull request workflow…

  • #10603: MAINT: installer scripts removed

  • #10604: MAINT: Change c*np.ones(…) to np.full(…, c, …) in many…

  • #10608: Univariate splines should require x to be strictly increasing…

  • #10613: ENH: Add seed option for gaussian_kde.resample

  • #10614: ENH: Add parallel computation to scipy.fft

  • #10615: MAINT: interpolate: remove unused header file

  • #10616: MAINT: Clean up 32-bit platform xfail markers

  • #10618: BENCH: Added ‘trust-constr’ to minimize benchmarks

  • #10621: [MRG] multiple stability updates in lobpcg

  • #10622: MAINT: forward port 1.3.1 release notes

  • #10624: DOC: stats: Fix spelling of ‘support’.

  • #10627: DOC: stats: Add references for the alpha distribution.

  • #10629: MAINT: special: avoid overflow longer in `zeta` for negative…

  • #10630: TST: GH10271, relax test assertion, fixes #10271

  • #10631: DOC: nelder-mean uses xatol fixes #10036

  • #10633: BUG: interpolate: integral(a, b) should be zero when both limits…

  • #10635: DOC: special: complete hypergeometric functions documentation

  • #10636: BUG: special: use series for `hyp1f1` when it converges rapidly

  • #10641: ENH: allow matching of general bipartite graphs

  • #10643: ENH: scipy.sparse.linalg.spsolve triangular unit diagonal

  • #10650: ENH: Cythonize sosfilt

  • #10654: DOC: Vertical alignment of table entries

  • #10655: ENH: Dockerfile for scipy development

  • #10660: TST: clean up tests for rvs in scipy.stats

  • #10664: Throw error on non-finite input for binned_statistic_dd()

  • #10665: DOC: special: improve the docstrings for `gamma` and `gammasgn`

  • #10669: TST: Update scipy.fft real transform tests

  • #10670: DOC: Clarify docs and error messages for scipy.signal.butter

  • #10672: ENH: return solution attribute when using events in solve_ivp

  • #10675: MAINT: special: add an explicit NaN check for `iv` arguments

  • #10679: DOC: special: Add documentation for `beta` function

  • #10681: TST: sparse.linalg: fix arnoldi test seed

  • #10682: DOC: special: Add documentation for `betainc` function

  • #10684: TST: special: require Mpmath 1.1.0 for `test_hyperu_around_0`

  • #10686: FIX: sphinx isattributedescriptor is not available in sphinx…

  • #10687: DOC: added Docker quickstart guide by @andyfaff

  • #10689: DOC: special: clarify format of parameters/returns sections for…

  • #10690: DOC: special: improve docstrings of incomplete gamma functions

  • #10692: ENH: higher-dimensional input in `spatial.SphericalVoronoi`

  • #10694: ENH: ScalarFunction.fun_and_grad

  • #10698: DOC: special: Add documentation for `betaincinv`

  • #10699: MAINT: remove time print lbfgsb fixes #8417

  • #10701: TST, MAINT: bump OpenBLAS to 0.3.7 stable

  • #10702: DOC: clarify iterations consume multiple function calls

  • #10703: DOC: iprint doc lbfgsb closes #5482

  • #10708: TST: test suggested in gh1758

  • #10710: ENH: Added nan_policy to circ functions in `stats`

  • #10712: ENH: add axis parameter to stats.entropy

  • #10714: DOC: Formatting fix rv_continuous.expect docs

  • #10715: DOC: BLD: update doc Makefile for python version; add scipy version…

  • #10717: MAINT: modernize doc/Makefile

  • #10719: Enable setting minres initial vector

  • #10720: DOC: silence random warning in doc build for `stats.binned_statistic_dd`

  • #10724: DEV: Add doc option to runtests.py

  • #10728: MAINT: get rid of gramA, gramB text files that lobpcg tests leave…

  • #10732: DOC: add min_only to docstring for Dijkstra’s algorithm

  • #10734: DOC: spell out difference between source and target in shortest…

  • #10735: Fix for Python 4

  • #10739: BUG: optimize/slsqp: deal with singular BFGS update

  • #10741: ENH: LAPACK wrappers for ?geequ, ?geequb, ?syequb, ?heequb

  • #10742: DOC: special: add to the docstring of `gammaln`

  • #10743: ENH: special: add a real dispatch for `wrightomega`

  • #10746: MAINT: Fix typos in comments, docs and test name

  • #10747: Remove spurious quotes

  • #10750: MAINT: make cython code more precise

  • #10751: MAINT: Check that scipy.linalg.lapack functions are documented

  • #10752: MAINT: special: use `sf_error` in Cephes

  • #10755: DOC: cluster: Add ‘See Also’ and ‘Examples’ for kmeans2.

  • #10763: MAINT: list of minimize methods

  • #10768: BUG: Fix corner case for sos2zpk

  • #10773: Fix error type for complex input to scipy.fftpack.rfft and irfft

  • #10776: ENH: handle geodesic input in `spatial.SphericalVoronoi`

  • #10777: MAINT: minimizer–>custom should handle the kinds of bounds/constrain……

  • #10781: ENH: solve_triangular C order improvement

  • #10787: Fix behavior of `exp1` on branch cut and add docstring

  • #10789: DOC: special: add parameters/returns doc sections for erfc/erfcx/erfi

  • #10790: Travis CI: sudo is deprecated and Xenial is default distro

  • #10792: DOC: special: add full docstring for `expi`

  • #10799: DOC: special: add a complete docstring for `expn`

  • #10800: Docs edits (GSoD)

  • #10802: BUG: fix UnboundLocalError in Radau (scipy#10775)

  • #10804: ENH: Speed up next_fast_len with LRU cache

  • #10805: DOC: Fix unbalanced quotes in signal.place_poles

  • #10809: ENH: Speed up next_fast_len

  • #10810: ENH: Raise catchable exceptions for bad Fortran files

  • #10811: MAINT: optimize: Remove extra variable from _remove_redundancy_dense

  • #10813: MAINT: special: Remove unused variables from _kolmogi and _smirnovi

  • #10815: DOC, API: scipy.stats.reciprocal is “log-uniform”

  • #10816: MAINT: special: remove deprecated `bessel_diff_formula`

  • #10817: DOC: special: complete the docstring for `fresnel`

  • #10820: Fixed compiler_helper.py to allow compilation with ICC on Linux

  • #10823: DOC: updated reference guide text for consistency in writing…

  • #10825: MAINT: special: change some features of the Voigt function

  • #10828: MAINT: integrate: Remove unused variable from init_callback

  • #10830: Adding LOBPCG solver in svds in addition to ARPACK

  • #10837: WIP: ENH: reduction function for `spatial.tranform.Rotation`…

  • #10843: ENH: Adding optional parameter to stats.zscores to allow for…

  • #10845: Rebase kruskal fix

  • #10847: remove redundant __getitem__ from scipy.sparse.lil

  • #10848: Better handling of empty (not missing) docstrings

  • #10849: ENH: implement rmatmat for LinearOperator

  • #10850: MAINT : Refactoring lil List of Lists

  • #10851: DOC: add a generative art example to the scipy.spatial tutorial.

  • #10852: DOC: linalg: fixed gh-10838 unused imports in example deleted

  • #10854: DOC: special: add a full docstring for `pdtr`

  • #10861: ENH: option to reuse binnumbers in stats.binned_statistic_dd

  • #10863: DOC: partial standardization and validation of scipy.stats reference…

  • #10865: BUG: special: fix incomplete gamma functions for infinite `a`

  • #10866: ENH: calculation of mean in spatial.transform.Rotation

  • #10867: MAINT: Also store latex directory

  • #10869: ENH: Implement overlap-add convolution

  • #10870: ENH: Do not raise EOF error if wavfile data read

  • #10876: ENH: Add beta-binomial distribution to scipy.stats

  • #10878: MAINT: Update R project URL

  • #10883: MAINT: (ndimage) More robust check for output being a numpy dtype

  • #10884: DOC: Added instructions on adding a new distribution to scipy.stats.

  • #10885: [BUG] fix lobpcg with maxiter=None results in Exception

  • #10899: ENH: Match R functionality for hmean

  • #10900: MAINT: stats: Use keepdims to simplify a few lines in power_divergence.

  • #10901: ENH: sparse/linalg: support pydata/sparse matrices

  • #10907: Check whether `maxiter` is integer

  • #10912: ENH: warn user that quad() ignores `points=…` when `weight=…`…

  • #10918: CI: fix Travis CI py3.8 build

  • #10920: MAINT: Update constants to codata 2018 values (second try)

  • #10921: ENH: scipy.sparse.lil: tocsr accelerated

  • #10924: BUG: Forbid passing ‘args’ as kwarg in scipy.optimize.curve_fit

  • #10928: DOC: Add examples to io.wavfile docstrings

  • #10934: typo fix

  • #10935: BUG: Avoid undefined behaviour on float to unsigned conversion

  • #10936: DOC: Added missing example to stats.mstats.variation

  • #10939: ENH: scipy.sparse.lil: tocsr accelerated depending on density

  • #10946: BUG: setting verbose > 2 in minimize with trust-constr method…

  • #10947: DOC: special: small improvements to the `poch` docstring

  • #10949: BUG: fix return type of erlang_gen._argcheck

  • #10951: DOC: fixed Ricker wavelet formula

  • #10954: BUG: special: fix `factorial` return type for 0-d inputs

  • #10955: MAINT: Relax the assert_unitary atol value

  • #10956: WIP: make pdtr(int, double) be pdtr(double, double)

  • #10957: BUG: Ensure full binary compatibility of long double test data

  • #10964: ENH: Make Slerp callable with a scalar argument

  • #10972: BUG: Handle complex gains in zpk2sos

  • #10975: TST: skip test_kendalltau ppc64le

  • #10978: BUG: boxcox data dimension and constancy check #5112

  • #10979: API: Rename dcm to (rotation) matrix in Rotation class

  • #10981: MAINT: add support for a==0 and x>0 edge case to igam and igamc

  • #10986: MAINT: Remove direct imports from numpy in signaltools.py

  • #10988: BUG: signal: fixed issue #10360

  • #10989: FIX binned_statistic_dd Mac wheel test fails

  • #10990: BUG: Fix memory leak in shgo triangulation

  • #10992: TST: Relax tolerance in upfirdn test_modes

  • #10993: TST: bump tolerance in optimize tests

  • #10997: MAINT: Rework residue and residuez

  • #11001: DOC: Updated Windows build tutorial

  • #11004: BUG: integrate/quad_vec: fix several bugs in quad_vec

  • #11005: TST: add Python 3.8 Win CI

  • #11006: DOC: special: add a reference for `kl_div`

  • #11012: MAINT: Rework invres and invresz

  • #11015: DOC: special: add references for `rel_entr`

  • #11017: DOC: numpydoc validation of morestats.py

  • #11018: MAINT: Filter unrelated warning

  • #11031: MAINT: update choose_conv_method for pocketfft implementation

  • #11034: MAINT: TST: Skip tests with multiprocessing that use “spawn”…

  • #11036: DOC: update doc/README with some more useful content.

  • #11037: DOC: special: add a complete docstring for `rgamma`

  • #11038: DOC: special: add a reference for the polygamma function

  • #11042: TST: fix tf2zpk test failure due to incorrect complex sorting.

  • #11044: MAINT: choose_conv_method can choose fftconvolution for longcomplex

  • #11046: TST: Reduce tolerance for ppc64le with reference lapack

  • #11048: DOC: special: add reference for orthogonal polynomial functions

  • #11049: MAINT: proper random number initialization and readability fix

  • #11051: MAINT: pep8 cleanup

  • #11054: TST: bump test precision for dual_annealing SLSQP test

  • #11055: DOC: special: add a reference for `zeta`

  • #11056: API: Deprecated normalized keyword in Rotation

  • #11065: DOC: Ubuntu Development Environment Quickstart should not modify…

  • #11066: BUG: skip deprecation for numpy top-level types

  • #11067: DOC: updated documentation for consistency in writing style

  • #11070: DOC: Amendment to Ubuntu Development Environment Quickstart should…

  • #11073: DOC: fix 1.4.0 release notes

  • #11081: API: Replace Rotation.match_vectors with align_vectors

  • #11083: DOC: more 1.4.0 release note fixes

  • #11092: BUG: stats: fix freezing of some distributions

  • #11096: BUG: scipy.sparse.csgraph: fixed issue #10774

  • #11124: fix Cython warnings related to _stats.pyx

  • #11126: BUG: interpolate/fitpack: fix memory leak in splprep

  • #11127: Avoid potential segfault in CSR and CSC matrix indexing

  • #11152: BUG: Fix random state bug multiscale_graphcorr

  • #11166: BUG: empty sparse slice shapes

  • #11167: BUG: redundant fft in signal.resample

  • #11181: TST: Fix tolerance of tests for aarch64

  • #11182: TST: Bump up tolerance for test_maxiter_worsening

  • #11199: BUG: sparse.linalg: mistake in unsymm. real shift-invert ARPACK eigenvalue selection