scipy 1.15.2__cp312-cp312-musllinux_1_2_aarch64.whl → 1.16.0rc1__cp312-cp312-musllinux_1_2_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scipy/__config__.py +11 -11
- scipy/__init__.py +3 -6
- scipy/_cyutility.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_array_api.py +497 -161
- scipy/_lib/_array_api_compat_vendor.py +9 -0
- scipy/_lib/_bunch.py +4 -0
- scipy/_lib/_ccallback_c.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_fpumode.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_test_deprecation_call.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_test_deprecation_def.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_testutils.py +6 -2
- scipy/_lib/_uarray/_uarray.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/_util.py +222 -125
- scipy/_lib/array_api_compat/__init__.py +4 -4
- scipy/_lib/array_api_compat/_internal.py +19 -6
- scipy/_lib/array_api_compat/common/__init__.py +1 -1
- scipy/_lib/array_api_compat/common/_aliases.py +365 -193
- scipy/_lib/array_api_compat/common/_fft.py +94 -64
- scipy/_lib/array_api_compat/common/_helpers.py +413 -180
- scipy/_lib/array_api_compat/common/_linalg.py +116 -40
- scipy/_lib/array_api_compat/common/_typing.py +179 -10
- scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
- scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
- scipy/_lib/array_api_compat/cupy/_info.py +16 -6
- scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
- scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
- scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
- scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
- scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
- scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
- scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
- scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
- scipy/_lib/array_api_compat/numpy/_info.py +36 -16
- scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
- scipy/_lib/array_api_compat/numpy/fft.py +11 -5
- scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
- scipy/_lib/array_api_compat/torch/__init__.py +3 -5
- scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
- scipy/_lib/array_api_compat/torch/_info.py +27 -16
- scipy/_lib/array_api_compat/torch/_typing.py +3 -0
- scipy/_lib/array_api_compat/torch/fft.py +17 -18
- scipy/_lib/array_api_compat/torch/linalg.py +16 -16
- scipy/_lib/array_api_extra/__init__.py +26 -3
- scipy/_lib/array_api_extra/_delegation.py +171 -0
- scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_at.py +463 -0
- scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
- scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
- scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
- scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
- scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
- scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
- scipy/_lib/array_api_extra/testing.py +359 -0
- scipy/_lib/decorator.py +2 -2
- scipy/_lib/doccer.py +1 -7
- scipy/_lib/messagestream.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/_lib/pyprima/__init__.py +212 -0
- scipy/_lib/pyprima/cobyla/__init__.py +0 -0
- scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
- scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
- scipy/_lib/pyprima/cobyla/geometry.py +226 -0
- scipy/_lib/pyprima/cobyla/initialize.py +215 -0
- scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
- scipy/_lib/pyprima/cobyla/update.py +289 -0
- scipy/_lib/pyprima/common/__init__.py +0 -0
- scipy/_lib/pyprima/common/_bounds.py +34 -0
- scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
- scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
- scipy/_lib/pyprima/common/_project.py +173 -0
- scipy/_lib/pyprima/common/checkbreak.py +93 -0
- scipy/_lib/pyprima/common/consts.py +47 -0
- scipy/_lib/pyprima/common/evaluate.py +99 -0
- scipy/_lib/pyprima/common/history.py +38 -0
- scipy/_lib/pyprima/common/infos.py +30 -0
- scipy/_lib/pyprima/common/linalg.py +435 -0
- scipy/_lib/pyprima/common/message.py +290 -0
- scipy/_lib/pyprima/common/powalg.py +131 -0
- scipy/_lib/pyprima/common/preproc.py +277 -0
- scipy/_lib/pyprima/common/present.py +5 -0
- scipy/_lib/pyprima/common/ratio.py +54 -0
- scipy/_lib/pyprima/common/redrho.py +47 -0
- scipy/_lib/pyprima/common/selectx.py +296 -0
- scipy/_lib/tests/test__util.py +105 -121
- scipy/_lib/tests/test_array_api.py +169 -34
- scipy/_lib/tests/test_bunch.py +7 -0
- scipy/_lib/tests/test_ccallback.py +2 -10
- scipy/_lib/tests/test_public_api.py +13 -0
- scipy/cluster/_hierarchy.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/cluster/_optimal_leaf_ordering.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/cluster/_vq.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/cluster/hierarchy.py +393 -223
- scipy/cluster/tests/test_hierarchy.py +273 -335
- scipy/cluster/tests/test_vq.py +45 -61
- scipy/cluster/vq.py +39 -35
- scipy/conftest.py +263 -157
- scipy/constants/_constants.py +4 -1
- scipy/constants/tests/test_codata.py +2 -2
- scipy/constants/tests/test_constants.py +11 -18
- scipy/datasets/_download_all.py +15 -1
- scipy/datasets/_fetchers.py +7 -1
- scipy/datasets/_utils.py +1 -1
- scipy/differentiate/_differentiate.py +25 -25
- scipy/differentiate/tests/test_differentiate.py +24 -25
- scipy/fft/_basic.py +20 -0
- scipy/fft/_helper.py +3 -34
- scipy/fft/_pocketfft/helper.py +29 -1
- scipy/fft/_pocketfft/pypocketfft.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/fft/_pocketfft/tests/test_basic.py +2 -4
- scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
- scipy/fft/_realtransforms.py +13 -0
- scipy/fft/tests/test_basic.py +27 -25
- scipy/fft/tests/test_fftlog.py +16 -7
- scipy/fft/tests/test_helper.py +18 -34
- scipy/fft/tests/test_real_transforms.py +8 -10
- scipy/fftpack/convolve.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/fftpack/tests/test_basic.py +2 -4
- scipy/fftpack/tests/test_real_transforms.py +8 -9
- scipy/integrate/_bvp.py +9 -3
- scipy/integrate/_cubature.py +3 -2
- scipy/integrate/_dop.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/_ivp/common.py +3 -3
- scipy/integrate/_ivp/ivp.py +9 -2
- scipy/integrate/_ivp/tests/test_ivp.py +19 -0
- scipy/integrate/_lsoda.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/_quadpack_py.py +11 -7
- scipy/integrate/_quadrature.py +3 -3
- scipy/integrate/_rules/_base.py +2 -2
- scipy/integrate/_tanhsinh.py +57 -54
- scipy/integrate/_test_multivariate.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/_test_odeint_banded.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/_vode.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/integrate/tests/test__quad_vec.py +0 -6
- scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
- scipy/integrate/tests/test_cubature.py +21 -35
- scipy/integrate/tests/test_quadrature.py +6 -8
- scipy/integrate/tests/test_tanhsinh.py +61 -43
- scipy/interpolate/__init__.py +70 -58
- scipy/interpolate/_bary_rational.py +22 -22
- scipy/interpolate/_bsplines.py +119 -66
- scipy/interpolate/_cubic.py +65 -50
- scipy/interpolate/_dfitpack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/_dierckx.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/_fitpack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/_fitpack2.py +9 -6
- scipy/interpolate/_fitpack_impl.py +32 -26
- scipy/interpolate/_fitpack_repro.py +23 -19
- scipy/interpolate/_interpnd.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/_interpolate.py +30 -12
- scipy/interpolate/_ndbspline.py +13 -18
- scipy/interpolate/_ndgriddata.py +5 -8
- scipy/interpolate/_polyint.py +95 -31
- scipy/interpolate/_ppoly.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/interpolate/dfitpack.py +0 -20
- scipy/interpolate/interpnd.py +1 -2
- scipy/interpolate/tests/test_bary_rational.py +2 -2
- scipy/interpolate/tests/test_bsplines.py +97 -1
- scipy/interpolate/tests/test_fitpack2.py +39 -1
- scipy/interpolate/tests/test_interpnd.py +32 -20
- scipy/interpolate/tests/test_interpolate.py +48 -4
- scipy/interpolate/tests/test_rgi.py +2 -1
- scipy/io/_fast_matrix_market/__init__.py +2 -0
- scipy/io/_fast_matrix_market/_fmm_core.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
- scipy/io/_harwell_boeing/hb.py +7 -11
- scipy/io/_idl.py +5 -7
- scipy/io/_netcdf.py +15 -5
- scipy/io/_test_fortran.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/io/arff/tests/test_arffread.py +3 -3
- scipy/io/matlab/__init__.py +5 -3
- scipy/io/matlab/_mio.py +4 -1
- scipy/io/matlab/_mio5.py +19 -13
- scipy/io/matlab/_mio5_utils.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/io/matlab/_mio_utils.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/io/matlab/tests/test_mio.py +46 -18
- scipy/io/matlab/tests/test_mio_funcs.py +1 -1
- scipy/io/tests/test_mmio.py +7 -1
- scipy/io/tests/test_wavfile.py +41 -0
- scipy/io/wavfile.py +57 -10
- scipy/linalg/_basic.py +113 -86
- scipy/linalg/_cythonized_array_utils.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_decomp.py +22 -9
- scipy/linalg/_decomp_cholesky.py +28 -13
- scipy/linalg/_decomp_cossin.py +45 -30
- scipy/linalg/_decomp_interpolative.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_decomp_polar.py +2 -0
- scipy/linalg/_decomp_qr.py +6 -2
- scipy/linalg/_decomp_qz.py +3 -0
- scipy/linalg/_decomp_schur.py +3 -1
- scipy/linalg/_decomp_svd.py +13 -2
- scipy/linalg/_decomp_update.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_flapack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_linalg_pythran.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/cython_blas.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/cython_lapack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/linalg/lapack.py +22 -2
- scipy/linalg/tests/_cython_examples/meson.build +7 -0
- scipy/linalg/tests/test_basic.py +31 -16
- scipy/linalg/tests/test_batch.py +588 -0
- scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
- scipy/linalg/tests/test_decomp.py +40 -3
- scipy/linalg/tests/test_decomp_cossin.py +14 -0
- scipy/linalg/tests/test_decomp_ldl.py +1 -1
- scipy/linalg/tests/test_interpolative.py +17 -0
- scipy/linalg/tests/test_lapack.py +115 -7
- scipy/linalg/tests/test_matfuncs.py +157 -102
- scipy/linalg/tests/test_procrustes.py +0 -7
- scipy/linalg/tests/test_solve_toeplitz.py +1 -1
- scipy/linalg/tests/test_special_matrices.py +1 -5
- scipy/ndimage/__init__.py +1 -0
- scipy/ndimage/_ctest.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/ndimage/_cytest.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/ndimage/_delegators.py +8 -2
- scipy/ndimage/_filters.py +433 -5
- scipy/ndimage/_interpolation.py +36 -6
- scipy/ndimage/_measurements.py +4 -2
- scipy/ndimage/_morphology.py +5 -0
- scipy/ndimage/_nd_image.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/ndimage/_ndimage_api.py +2 -1
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/ndimage/_support_alternative_backends.py +18 -6
- scipy/ndimage/tests/test_filters.py +351 -259
- scipy/ndimage/tests/test_fourier.py +7 -9
- scipy/ndimage/tests/test_interpolation.py +68 -61
- scipy/ndimage/tests/test_measurements.py +18 -35
- scipy/ndimage/tests/test_morphology.py +143 -131
- scipy/ndimage/tests/test_splines.py +1 -3
- scipy/odr/__odrpack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_bracket.py +46 -26
- scipy/optimize/_chandrupatla.py +9 -10
- scipy/optimize/_cobyla_py.py +104 -123
- scipy/optimize/_constraints.py +14 -10
- scipy/optimize/_differentiable_functions.py +371 -230
- scipy/optimize/_differentialevolution.py +4 -3
- scipy/optimize/_direct.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_highspy/_core.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_highspy/_highs_options.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_highspy/_highs_wrapper.py +6 -4
- scipy/optimize/_lbfgsb.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_lbfgsb_py.py +57 -16
- scipy/optimize/_linprog_doc.py +2 -2
- scipy/optimize/_linprog_highs.py +11 -11
- scipy/optimize/_linprog_ip.py +25 -10
- scipy/optimize/_linprog_util.py +18 -19
- scipy/optimize/_lsap.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_lsq/least_squares.py +198 -126
- scipy/optimize/_lsq/lsq_linear.py +6 -6
- scipy/optimize/_lsq/trf.py +35 -8
- scipy/optimize/_milp.py +3 -1
- scipy/optimize/_minimize.py +105 -36
- scipy/optimize/_minpack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_nnls.py +20 -21
- scipy/optimize/_nonlin.py +34 -3
- scipy/optimize/_numdiff.py +288 -110
- scipy/optimize/_optimize.py +86 -48
- scipy/optimize/_pava_pybind.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_remove_redundancy.py +5 -5
- scipy/optimize/_root_scalar.py +1 -1
- scipy/optimize/_shgo.py +6 -0
- scipy/optimize/_shgo_lib/_complex.py +1 -1
- scipy/optimize/_slsqp_py.py +216 -124
- scipy/optimize/_slsqplib.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_trustregion.py +20 -6
- scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
- scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
- scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
- scipy/optimize/_trustregion_constr/projections.py +12 -8
- scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
- scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
- scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
- scipy/optimize/_trustregion_exact.py +0 -1
- scipy/optimize/_zeros.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/slsqp.py +0 -1
- scipy/optimize/tests/test__basinhopping.py +1 -1
- scipy/optimize/tests/test__differential_evolution.py +4 -4
- scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
- scipy/optimize/tests/test__numdiff.py +66 -22
- scipy/optimize/tests/test__remove_redundancy.py +2 -2
- scipy/optimize/tests/test__shgo.py +9 -1
- scipy/optimize/tests/test_bracket.py +71 -46
- scipy/optimize/tests/test_chandrupatla.py +133 -135
- scipy/optimize/tests/test_cobyla.py +74 -45
- scipy/optimize/tests/test_constraints.py +1 -1
- scipy/optimize/tests/test_differentiable_functions.py +226 -6
- scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
- scipy/optimize/tests/test_least_squares.py +125 -13
- scipy/optimize/tests/test_linear_assignment.py +3 -3
- scipy/optimize/tests/test_linprog.py +3 -3
- scipy/optimize/tests/test_lsq_linear.py +5 -5
- scipy/optimize/tests/test_minimize_constrained.py +2 -2
- scipy/optimize/tests/test_minpack.py +4 -4
- scipy/optimize/tests/test_nnls.py +43 -3
- scipy/optimize/tests/test_nonlin.py +36 -0
- scipy/optimize/tests/test_optimize.py +95 -17
- scipy/optimize/tests/test_slsqp.py +36 -4
- scipy/optimize/tests/test_zeros.py +34 -1
- scipy/signal/__init__.py +12 -23
- scipy/signal/_delegators.py +568 -0
- scipy/signal/_filter_design.py +459 -241
- scipy/signal/_fir_filter_design.py +262 -90
- scipy/signal/_lti_conversion.py +3 -2
- scipy/signal/_ltisys.py +118 -91
- scipy/signal/_max_len_seq_inner.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/signal/_peak_finding_utils.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/signal/_polyutils.py +172 -0
- scipy/signal/_short_time_fft.py +553 -76
- scipy/signal/_signal_api.py +30 -0
- scipy/signal/_signaltools.py +719 -396
- scipy/signal/_sigtools.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/signal/_sosfilt.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/signal/_spectral_py.py +221 -50
- scipy/signal/_spline.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/signal/_spline_filters.py +108 -68
- scipy/signal/_support_alternative_backends.py +73 -0
- scipy/signal/_upfirdn.py +4 -1
- scipy/signal/_upfirdn_apply.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/signal/_waveforms.py +2 -11
- scipy/signal/_wavelets.py +1 -1
- scipy/signal/fir_filter_design.py +1 -0
- scipy/signal/spline.py +4 -11
- scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
- scipy/signal/tests/test_bsplines.py +114 -79
- scipy/signal/tests/test_cont2discrete.py +9 -2
- scipy/signal/tests/test_filter_design.py +721 -481
- scipy/signal/tests/test_fir_filter_design.py +332 -140
- scipy/signal/tests/test_savitzky_golay.py +4 -3
- scipy/signal/tests/test_short_time_fft.py +231 -5
- scipy/signal/tests/test_signaltools.py +2149 -1348
- scipy/signal/tests/test_spectral.py +19 -6
- scipy/signal/tests/test_splines.py +161 -96
- scipy/signal/tests/test_upfirdn.py +84 -50
- scipy/signal/tests/test_waveforms.py +20 -0
- scipy/signal/tests/test_windows.py +607 -466
- scipy/signal/windows/_windows.py +287 -148
- scipy/sparse/__init__.py +23 -4
- scipy/sparse/_base.py +269 -120
- scipy/sparse/_bsr.py +7 -4
- scipy/sparse/_compressed.py +59 -234
- scipy/sparse/_construct.py +90 -38
- scipy/sparse/_coo.py +115 -181
- scipy/sparse/_csc.py +4 -4
- scipy/sparse/_csparsetools.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/_csr.py +2 -2
- scipy/sparse/_data.py +48 -48
- scipy/sparse/_dia.py +105 -21
- scipy/sparse/_dok.py +0 -23
- scipy/sparse/_index.py +4 -4
- scipy/sparse/_matrix.py +23 -0
- scipy/sparse/_sparsetools.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/_sputils.py +37 -22
- scipy/sparse/base.py +0 -9
- scipy/sparse/bsr.py +0 -14
- scipy/sparse/compressed.py +0 -23
- scipy/sparse/construct.py +0 -6
- scipy/sparse/coo.py +0 -14
- scipy/sparse/csc.py +0 -3
- scipy/sparse/csgraph/_flow.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/_matching.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/_reordering.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/_shortest_path.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/_tools.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/_traversal.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/csgraph/tests/test_matching.py +14 -2
- scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
- scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
- scipy/sparse/csr.py +0 -5
- scipy/sparse/data.py +1 -6
- scipy/sparse/dia.py +0 -7
- scipy/sparse/dok.py +0 -10
- scipy/sparse/linalg/_dsolve/_superlu.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
- scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
- scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
- scipy/sparse/linalg/_expm_multiply.py +8 -3
- scipy/sparse/linalg/_interface.py +29 -26
- scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
- scipy/sparse/linalg/_isolve/iterative.py +51 -45
- scipy/sparse/linalg/_isolve/lgmres.py +6 -6
- scipy/sparse/linalg/_isolve/minres.py +5 -5
- scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
- scipy/sparse/linalg/_isolve/utils.py +2 -8
- scipy/sparse/linalg/_matfuncs.py +1 -1
- scipy/sparse/linalg/_norm.py +1 -1
- scipy/sparse/linalg/_propack/_cpropack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/linalg/_propack/_spropack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
- scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
- scipy/sparse/linalg/tests/test_interface.py +35 -0
- scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
- scipy/sparse/tests/test_arithmetic1d.py +5 -2
- scipy/sparse/tests/test_base.py +217 -40
- scipy/sparse/tests/test_common1d.py +17 -12
- scipy/sparse/tests/test_construct.py +1 -1
- scipy/sparse/tests/test_coo.py +272 -4
- scipy/sparse/tests/test_sparsetools.py +5 -0
- scipy/sparse/tests/test_sputils.py +36 -7
- scipy/spatial/_ckdtree.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/_distance_pybind.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/_distance_wrap.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/_hausdorff.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/_qhull.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/_voronoi.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/distance.py +49 -42
- scipy/spatial/tests/test_distance.py +3 -1
- scipy/spatial/tests/test_kdtree.py +1 -0
- scipy/spatial/tests/test_qhull.py +106 -2
- scipy/spatial/transform/__init__.py +5 -3
- scipy/spatial/transform/_rigid_transform.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/transform/_rotation.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
- scipy/spatial/transform/tests/test_rotation.py +1342 -790
- scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
- scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
- scipy/special/__init__.py +1 -47
- scipy/special/_add_newdocs.py +34 -772
- scipy/special/_basic.py +22 -25
- scipy/special/_comb.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_ellip_harm_2.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_gufuncs.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_logsumexp.py +83 -69
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_special_ufuncs.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/_ufuncs_cxx.pxd +2 -15
- scipy/special/_ufuncs_cxx.pyx +5 -44
- scipy/special/_ufuncs_cxx_defs.h +2 -16
- scipy/special/_ufuncs_defs.h +0 -8
- scipy/special/cython_special.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/special/cython_special.pxd +1 -1
- scipy/special/tests/_cython_examples/meson.build +10 -1
- scipy/special/tests/test_basic.py +153 -20
- scipy/special/tests/test_boost_ufuncs.py +3 -0
- scipy/special/tests/test_cdflib.py +35 -11
- scipy/special/tests/test_gammainc.py +16 -0
- scipy/special/tests/test_hyp2f1.py +23 -2
- scipy/special/tests/test_log1mexp.py +85 -0
- scipy/special/tests/test_logsumexp.py +220 -64
- scipy/special/tests/test_mpmath.py +1 -0
- scipy/special/tests/test_nan_inputs.py +1 -1
- scipy/special/tests/test_orthogonal.py +17 -18
- scipy/special/tests/test_sf_error.py +3 -2
- scipy/special/tests/test_sph_harm.py +6 -7
- scipy/special/tests/test_support_alternative_backends.py +211 -76
- scipy/stats/__init__.py +4 -1
- scipy/stats/_ansari_swilk_statistics.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_axis_nan_policy.py +4 -3
- scipy/stats/_biasedurn.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_continued_fraction.py +387 -0
- scipy/stats/_continuous_distns.py +296 -319
- scipy/stats/_covariance.py +6 -3
- scipy/stats/_discrete_distns.py +39 -32
- scipy/stats/_distn_infrastructure.py +39 -12
- scipy/stats/_distribution_infrastructure.py +900 -238
- scipy/stats/_entropy.py +7 -8
- scipy/{_lib → stats}/_finite_differences.py +1 -1
- scipy/stats/_hypotests.py +82 -49
- scipy/stats/_kde.py +53 -49
- scipy/stats/_ksstats.py +1 -1
- scipy/stats/_levy_stable/__init__.py +7 -15
- scipy/stats/_levy_stable/levyst.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_morestats.py +112 -67
- scipy/stats/_mstats_basic.py +13 -17
- scipy/stats/_mstats_extras.py +8 -8
- scipy/stats/_multivariate.py +89 -113
- scipy/stats/_new_distributions.py +97 -20
- scipy/stats/_page_trend_test.py +12 -5
- scipy/stats/_probability_distribution.py +265 -43
- scipy/stats/_qmc.py +14 -9
- scipy/stats/_qmc_cy.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_resampling.py +4 -29
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_stats.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_stats_mstats_common.py +19 -2
- scipy/stats/_stats_py.py +534 -460
- scipy/stats/_stats_pythran.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
- scipy/stats/_variation.py +5 -7
- scipy/stats/_wilcoxon.py +13 -7
- scipy/stats/tests/common_tests.py +6 -4
- scipy/stats/tests/test_axis_nan_policy.py +62 -24
- scipy/stats/tests/test_continued_fraction.py +173 -0
- scipy/stats/tests/test_continuous.py +379 -60
- scipy/stats/tests/test_continuous_basic.py +18 -12
- scipy/stats/tests/test_discrete_basic.py +14 -8
- scipy/stats/tests/test_discrete_distns.py +16 -16
- scipy/stats/tests/test_distributions.py +117 -75
- scipy/stats/tests/test_entropy.py +40 -48
- scipy/stats/tests/test_fit.py +4 -3
- scipy/stats/tests/test_hypotests.py +153 -24
- scipy/stats/tests/test_kdeoth.py +109 -41
- scipy/stats/tests/test_marray.py +289 -0
- scipy/stats/tests/test_morestats.py +79 -47
- scipy/stats/tests/test_mstats_basic.py +3 -3
- scipy/stats/tests/test_multivariate.py +434 -83
- scipy/stats/tests/test_qmc.py +13 -10
- scipy/stats/tests/test_quantile.py +199 -0
- scipy/stats/tests/test_rank.py +119 -112
- scipy/stats/tests/test_resampling.py +47 -56
- scipy/stats/tests/test_sampling.py +9 -4
- scipy/stats/tests/test_stats.py +799 -939
- scipy/stats/tests/test_variation.py +8 -6
- scipy/version.py +2 -2
- {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/LICENSE.txt +1 -1
- {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/METADATA +9 -9
- {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/RECORD +1316 -1323
- scipy.libs/libgcc_s-69c45f16.so.1 +0 -0
- scipy.libs/libgfortran-db0b6589.so.5.0.0 +0 -0
- scipy.libs/{libstdc++-1b614e01.so.6.0.32 → libstdc++-1f1a71be.so.6.0.33} +0 -0
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_cobyla.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_cython_nnls.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/optimize/_slsqp.cpython-312-aarch64-linux-musl.so +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.so +0 -0
- scipy/special/tests/test_log_softmax.py +0 -109
- scipy/special/tests/test_xsf_cuda.py +0 -114
- scipy/special/xsf/binom.h +0 -89
- scipy/special/xsf/cdflib.h +0 -100
- scipy/special/xsf/cephes/airy.h +0 -307
- scipy/special/xsf/cephes/besselpoly.h +0 -51
- scipy/special/xsf/cephes/beta.h +0 -257
- scipy/special/xsf/cephes/cbrt.h +0 -131
- scipy/special/xsf/cephes/chbevl.h +0 -85
- scipy/special/xsf/cephes/chdtr.h +0 -193
- scipy/special/xsf/cephes/const.h +0 -87
- scipy/special/xsf/cephes/ellie.h +0 -293
- scipy/special/xsf/cephes/ellik.h +0 -251
- scipy/special/xsf/cephes/ellpe.h +0 -107
- scipy/special/xsf/cephes/ellpk.h +0 -117
- scipy/special/xsf/cephes/expn.h +0 -260
- scipy/special/xsf/cephes/gamma.h +0 -398
- scipy/special/xsf/cephes/hyp2f1.h +0 -596
- scipy/special/xsf/cephes/hyperg.h +0 -361
- scipy/special/xsf/cephes/i0.h +0 -149
- scipy/special/xsf/cephes/i1.h +0 -158
- scipy/special/xsf/cephes/igam.h +0 -421
- scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
- scipy/special/xsf/cephes/igami.h +0 -313
- scipy/special/xsf/cephes/j0.h +0 -225
- scipy/special/xsf/cephes/j1.h +0 -198
- scipy/special/xsf/cephes/jv.h +0 -715
- scipy/special/xsf/cephes/k0.h +0 -164
- scipy/special/xsf/cephes/k1.h +0 -163
- scipy/special/xsf/cephes/kn.h +0 -243
- scipy/special/xsf/cephes/lanczos.h +0 -112
- scipy/special/xsf/cephes/ndtr.h +0 -275
- scipy/special/xsf/cephes/poch.h +0 -85
- scipy/special/xsf/cephes/polevl.h +0 -167
- scipy/special/xsf/cephes/psi.h +0 -194
- scipy/special/xsf/cephes/rgamma.h +0 -111
- scipy/special/xsf/cephes/scipy_iv.h +0 -811
- scipy/special/xsf/cephes/shichi.h +0 -248
- scipy/special/xsf/cephes/sici.h +0 -224
- scipy/special/xsf/cephes/sindg.h +0 -221
- scipy/special/xsf/cephes/tandg.h +0 -139
- scipy/special/xsf/cephes/trig.h +0 -58
- scipy/special/xsf/cephes/unity.h +0 -186
- scipy/special/xsf/cephes/zeta.h +0 -172
- scipy/special/xsf/config.h +0 -304
- scipy/special/xsf/digamma.h +0 -205
- scipy/special/xsf/error.h +0 -57
- scipy/special/xsf/evalpoly.h +0 -47
- scipy/special/xsf/expint.h +0 -266
- scipy/special/xsf/hyp2f1.h +0 -694
- scipy/special/xsf/iv_ratio.h +0 -173
- scipy/special/xsf/lambertw.h +0 -150
- scipy/special/xsf/loggamma.h +0 -163
- scipy/special/xsf/sici.h +0 -200
- scipy/special/xsf/tools.h +0 -427
- scipy/special/xsf/trig.h +0 -164
- scipy/special/xsf/wright_bessel.h +0 -843
- scipy/special/xsf/zlog1.h +0 -35
- scipy/stats/_mvn.cpython-312-aarch64-linux-musl.so +0 -0
- scipy.libs/libgcc_s-7393e603.so.1 +0 -0
- scipy.libs/libgfortran-eb933d8e.so.5.0.0 +0 -0
- {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/WHEEL +0 -0
scipy/sparse/tests/test_base.py
CHANGED
@@ -28,6 +28,9 @@ import random
|
|
28
28
|
from numpy.testing import (assert_equal, assert_array_equal,
|
29
29
|
assert_array_almost_equal, assert_almost_equal, assert_,
|
30
30
|
assert_allclose, suppress_warnings)
|
31
|
+
from numpy.exceptions import ComplexWarning
|
32
|
+
|
33
|
+
from types import GenericAlias
|
31
34
|
|
32
35
|
import scipy.linalg
|
33
36
|
|
@@ -36,14 +39,13 @@ from scipy.sparse import (csc_matrix, csr_matrix, dok_matrix,
|
|
36
39
|
coo_matrix, lil_matrix, dia_matrix, bsr_matrix,
|
37
40
|
csc_array, csr_array, dok_array,
|
38
41
|
coo_array, lil_array, dia_array, bsr_array,
|
39
|
-
eye, issparse, SparseEfficiencyWarning, sparray)
|
42
|
+
eye, issparse, SparseEfficiencyWarning, sparray, spmatrix)
|
40
43
|
from scipy.sparse._base import _formats
|
41
44
|
from scipy.sparse._sputils import (supported_dtypes, isscalarlike,
|
42
45
|
get_index_dtype, asmatrix, matrix)
|
43
46
|
from scipy.sparse.linalg import splu, expm, inv
|
44
47
|
|
45
48
|
from scipy._lib.decorator import decorator
|
46
|
-
from scipy._lib._util import ComplexWarning
|
47
49
|
|
48
50
|
IS_COLAB = ('google.colab' in sys.modules)
|
49
51
|
|
@@ -1021,10 +1023,8 @@ class _TestCommon:
|
|
1021
1023
|
assert_array_almost_equal(dat.sum(), datsp.sum())
|
1022
1024
|
assert_equal(dat.sum().dtype, datsp.sum().dtype)
|
1023
1025
|
assert_(np.isscalar(datsp.sum(axis=None)))
|
1024
|
-
assert_array_almost_equal(dat.sum(axis=None),
|
1025
|
-
|
1026
|
-
assert_equal(dat.sum(axis=None).dtype,
|
1027
|
-
datsp.sum(axis=None).dtype)
|
1026
|
+
assert_array_almost_equal(dat.sum(axis=None), datsp.sum(axis=None))
|
1027
|
+
assert_equal(dat.sum(axis=None).dtype, datsp.sum(axis=None).dtype)
|
1028
1028
|
assert_array_almost_equal(dat.sum(axis=0), datsp.sum(axis=0))
|
1029
1029
|
assert_equal(dat.sum(axis=0).dtype, datsp.sum(axis=0).dtype)
|
1030
1030
|
assert_array_almost_equal(dat.sum(axis=1), datsp.sum(axis=1))
|
@@ -1033,6 +1033,8 @@ class _TestCommon:
|
|
1033
1033
|
assert_equal(dat.sum(axis=-2).dtype, datsp.sum(axis=-2).dtype)
|
1034
1034
|
assert_array_almost_equal(dat.sum(axis=-1), datsp.sum(axis=-1))
|
1035
1035
|
assert_equal(dat.sum(axis=-1).dtype, datsp.sum(axis=-1).dtype)
|
1036
|
+
assert_array_almost_equal(dat.sum(axis=(0, 1)), datsp.sum(axis=(0, 1)))
|
1037
|
+
assert_equal(dat.sum(axis=(0, 1)).dtype, datsp.sum(axis=(0, 1)).dtype)
|
1036
1038
|
|
1037
1039
|
for dtype in self.checked_dtypes:
|
1038
1040
|
for j in range(len(matrices)):
|
@@ -1045,10 +1047,15 @@ class _TestCommon:
|
|
1045
1047
|
[-6, 7, 9]])
|
1046
1048
|
datsp = self.spcreator(dat)
|
1047
1049
|
|
1048
|
-
assert_raises(ValueError,
|
1049
|
-
|
1050
|
-
assert_raises(
|
1051
|
-
|
1050
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1051
|
+
datsp.sum(axis=3)
|
1052
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1053
|
+
datsp.sum(axis=(0, 3))
|
1054
|
+
with assert_raises(TypeError, match="axis must be an integer"):
|
1055
|
+
datsp.sum(axis=1.5)
|
1056
|
+
# error msg varies by sparray (1d result) or spmatrix (2d result)
|
1057
|
+
with assert_raises(ValueError, match="do.*n.t match.*shape|wrong.*dimensions"):
|
1058
|
+
datsp.mean(axis=1, out=out)
|
1052
1059
|
|
1053
1060
|
def test_sum_dtype(self):
|
1054
1061
|
dat = array([[0, 1, 2],
|
@@ -1087,6 +1094,12 @@ class _TestCommon:
|
|
1087
1094
|
datsp.sum(axis=1, out=datsp_out)
|
1088
1095
|
assert_array_almost_equal(dat_out, datsp_out)
|
1089
1096
|
|
1097
|
+
# check that wrong shape out parameter raises
|
1098
|
+
with assert_raises(ValueError, match="output parameter"):
|
1099
|
+
datsp.sum(out=array([0]))
|
1100
|
+
with assert_raises(ValueError, match="output parameter"):
|
1101
|
+
datsp.sum(out=array([[0]] if self.is_array_test else 0))
|
1102
|
+
|
1090
1103
|
def test_numpy_sum(self):
|
1091
1104
|
# See gh-5987
|
1092
1105
|
dat = array([[0, 1, 2],
|
@@ -1100,6 +1113,21 @@ class _TestCommon:
|
|
1100
1113
|
assert_array_almost_equal(dat_sum, datsp_sum)
|
1101
1114
|
assert_equal(dat_sum.dtype, datsp_sum.dtype)
|
1102
1115
|
|
1116
|
+
def test_sum_mean_container_type(self):
|
1117
|
+
dat = array([[0, 1, 2],
|
1118
|
+
[3, -4, 5],
|
1119
|
+
[-6, 7, 9]])
|
1120
|
+
datsp = self.spcreator(dat)
|
1121
|
+
|
1122
|
+
assert isscalarlike(datsp.sum())
|
1123
|
+
matrix_or_array = ndarray if self.is_array_test else np.matrix
|
1124
|
+
assert isinstance(datsp.sum(axis=0), matrix_or_array)
|
1125
|
+
assert isinstance(datsp.sum(axis=1), matrix_or_array)
|
1126
|
+
|
1127
|
+
assert isscalarlike(datsp.mean())
|
1128
|
+
assert isinstance(datsp.mean(axis=0), matrix_or_array)
|
1129
|
+
assert isinstance(datsp.mean(axis=1), matrix_or_array)
|
1130
|
+
|
1103
1131
|
def test_mean(self):
|
1104
1132
|
keep = not self.is_array_test
|
1105
1133
|
def check(dtype):
|
@@ -1131,21 +1159,31 @@ class _TestCommon:
|
|
1131
1159
|
dat.mean(axis=-1, keepdims=keep), datsp.mean(axis=-1)
|
1132
1160
|
)
|
1133
1161
|
assert_equal(dat.mean(axis=-1).dtype, datsp.mean(axis=-1).dtype)
|
1162
|
+
assert_array_almost_equal(
|
1163
|
+
dat.mean(axis=(0, 1), keepdims=keep), datsp.mean(axis=(0, 1))
|
1164
|
+
)
|
1165
|
+
assert_equal(dat.mean(axis=(0, 1)).dtype, datsp.mean(axis=(0, 1)).dtype)
|
1166
|
+
|
1134
1167
|
|
1135
1168
|
for dtype in self.checked_dtypes:
|
1136
1169
|
check(dtype)
|
1137
1170
|
|
1138
|
-
def
|
1171
|
+
def test_mean_invalid_param(self):
|
1139
1172
|
out = self.asdense(np.zeros((1, 3)))
|
1140
1173
|
dat = array([[0, 1, 2],
|
1141
1174
|
[3, -4, 5],
|
1142
1175
|
[-6, 7, 9]])
|
1143
1176
|
datsp = self.spcreator(dat)
|
1144
1177
|
|
1145
|
-
assert_raises(ValueError,
|
1146
|
-
|
1147
|
-
assert_raises(
|
1148
|
-
|
1178
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1179
|
+
datsp.mean(axis=3)
|
1180
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1181
|
+
datsp.mean(axis=(0, 3))
|
1182
|
+
with assert_raises(TypeError, match="axis must be an integer"):
|
1183
|
+
datsp.mean(axis=1.5)
|
1184
|
+
# error msg varies by sparray (1d result) or spmatrix (2d result)
|
1185
|
+
with assert_raises(ValueError, match="do.*n.t match.*shape|wrong.*dimensions"):
|
1186
|
+
datsp.mean(axis=1, out=out)
|
1149
1187
|
|
1150
1188
|
def test_mean_dtype(self):
|
1151
1189
|
dat = array([[0, 1, 2],
|
@@ -1184,6 +1222,12 @@ class _TestCommon:
|
|
1184
1222
|
datsp.mean(axis=1, out=datsp_out)
|
1185
1223
|
assert_array_almost_equal(dat_out, datsp_out)
|
1186
1224
|
|
1225
|
+
# check that wrong shape out parameter raises
|
1226
|
+
with assert_raises(ValueError, match="output parameter.*wrong.*dimension"):
|
1227
|
+
datsp.mean(out=array([0]))
|
1228
|
+
with assert_raises(ValueError, match="output parameter.*wrong.*dimension"):
|
1229
|
+
datsp.mean(out=array([[0]] if self.is_array_test else 0))
|
1230
|
+
|
1187
1231
|
def test_numpy_mean(self):
|
1188
1232
|
# See gh-5987
|
1189
1233
|
dat = array([[0, 1, 2],
|
@@ -1637,7 +1681,10 @@ class _TestCommon:
|
|
1637
1681
|
except ValueError:
|
1638
1682
|
assert_raises(ValueError, i.multiply, j)
|
1639
1683
|
continue
|
1640
|
-
|
1684
|
+
try:
|
1685
|
+
sp_mult = i.multiply(j)
|
1686
|
+
except ValueError:
|
1687
|
+
continue
|
1641
1688
|
if issparse(sp_mult):
|
1642
1689
|
assert_almost_equal(sp_mult.toarray(), dense_mult)
|
1643
1690
|
else:
|
@@ -1683,13 +1730,7 @@ class _TestCommon:
|
|
1683
1730
|
B = self.spcreator(A)
|
1684
1731
|
|
1685
1732
|
if self.is_array_test: # sparrays use element-wise power
|
1686
|
-
|
1687
|
-
# Complex exponents of 0 (our implicit fill value) change in numpy-1.25
|
1688
|
-
# from `(nan+nanj)` to `0`. Old value makes array element-wise result
|
1689
|
-
# dense and is hard to check for without any `isnan` method.
|
1690
|
-
# So while untested here, element-wise complex exponents work with np>=1.25.
|
1691
|
-
# for exponent in [1, 2, 2.2, 3, 1+3j]:
|
1692
|
-
for exponent in [1, 2, 2.2, 3]:
|
1733
|
+
for exponent in [1, 2, 2.2, 3, 1+3j]:
|
1693
1734
|
ret_sp = B**exponent
|
1694
1735
|
ret_np = A**exponent
|
1695
1736
|
assert_array_equal(ret_sp.toarray(), ret_np)
|
@@ -2060,8 +2101,8 @@ class _TestCommon:
|
|
2060
2101
|
|
2061
2102
|
with suppress_warnings() as sup:
|
2062
2103
|
sup.filter(SparseEfficiencyWarning,
|
2063
|
-
"Taking maximum
|
2064
|
-
"results
|
2104
|
+
"Taking (maximum|minimum) with a (positive|negative) number "
|
2105
|
+
"results in a dense matrix")
|
2065
2106
|
|
2066
2107
|
max_s = A.maximum(B)
|
2067
2108
|
min_s = A.minimum(B)
|
@@ -2354,20 +2395,14 @@ class _TestInplaceArithmetic:
|
|
2354
2395
|
|
2355
2396
|
# Matrix multiply from __rmatmul__
|
2356
2397
|
y = a.copy()
|
2357
|
-
|
2358
|
-
|
2359
|
-
|
2360
|
-
|
2361
|
-
|
2362
|
-
|
2363
|
-
|
2364
|
-
|
2365
|
-
y = a.copy()
|
2366
|
-
with assert_raises(ValueError, match="dimension mismatch"):
|
2367
|
-
x @= b
|
2368
|
-
x = x.dot(a.T)
|
2369
|
-
y @= b.T
|
2370
|
-
assert_array_equal(x, y)
|
2398
|
+
y @= b.T
|
2399
|
+
x = a.copy()
|
2400
|
+
y = a.copy()
|
2401
|
+
with assert_raises(ValueError, match="dimension mismatch"):
|
2402
|
+
x @= b
|
2403
|
+
x = x.dot(a.T)
|
2404
|
+
y @= b.T
|
2405
|
+
assert_array_equal(x, y)
|
2371
2406
|
|
2372
2407
|
# Floor division is not supported
|
2373
2408
|
with assert_raises(TypeError, match="unsupported operand"):
|
@@ -3708,9 +3743,11 @@ class _TestMinMax:
|
|
3708
3743
|
X = self.spcreator(np.arange(1, 10).reshape(3, 3))
|
3709
3744
|
assert_equal(X.min(), 1)
|
3710
3745
|
assert_equal(X.min().dtype, X.dtype)
|
3746
|
+
assert_equal(X.min(explicit=True), 1)
|
3711
3747
|
|
3712
3748
|
X = -X
|
3713
3749
|
assert_equal(X.max(), -1)
|
3750
|
+
assert_equal(X.max(explicit=True), -1)
|
3714
3751
|
|
3715
3752
|
# and a fully sparse matrix
|
3716
3753
|
Z = self.spcreator(np.zeros((1, 1)))
|
@@ -3785,6 +3822,7 @@ class _TestMinMax:
|
|
3785
3822
|
assert_array_equal(
|
3786
3823
|
X.min(axis=axis).toarray(), D.min(axis=axis, keepdims=keep)
|
3787
3824
|
)
|
3825
|
+
assert_equal(X.max(axis=(0, 1)), D.max(axis=(0, 1), keepdims=keep))
|
3788
3826
|
|
3789
3827
|
for axis in axes_even:
|
3790
3828
|
expected_max = D[-1, :]
|
@@ -3832,6 +3870,38 @@ class _TestMinMax:
|
|
3832
3870
|
assert_equal(X.max(axis=axis, explicit=ex).toarray(), D.max(axis=axis))
|
3833
3871
|
assert_equal(X.min(axis=axis, explicit=ex).toarray(), D.min(axis=axis))
|
3834
3872
|
|
3873
|
+
def test_minmax_container_type(self):
|
3874
|
+
dat = array([[0, 1, 2],
|
3875
|
+
[3, -4, 5],
|
3876
|
+
[-6, 7, 9]])
|
3877
|
+
datsp = self.spcreator(dat)
|
3878
|
+
matrix_or_array = ndarray if self.is_array_test else np.matrix
|
3879
|
+
spmatrix_or_sparray = sparray if self.is_array_test else spmatrix
|
3880
|
+
|
3881
|
+
assert isscalarlike(datsp.min())
|
3882
|
+
assert isinstance(datsp.min(axis=0), spmatrix_or_sparray)
|
3883
|
+
assert isinstance(datsp.min(axis=1), spmatrix_or_sparray)
|
3884
|
+
|
3885
|
+
assert isscalarlike(datsp.max())
|
3886
|
+
assert isinstance(datsp.max(axis=0), spmatrix_or_sparray)
|
3887
|
+
assert isinstance(datsp.max(axis=1), spmatrix_or_sparray)
|
3888
|
+
|
3889
|
+
assert isscalarlike(datsp.nanmin())
|
3890
|
+
assert isinstance(datsp.nanmin(axis=0), spmatrix_or_sparray)
|
3891
|
+
assert isinstance(datsp.nanmin(axis=1), spmatrix_or_sparray)
|
3892
|
+
|
3893
|
+
assert isscalarlike(datsp.nanmax())
|
3894
|
+
assert isinstance(datsp.nanmax(axis=0), spmatrix_or_sparray)
|
3895
|
+
assert isinstance(datsp.nanmax(axis=1), spmatrix_or_sparray)
|
3896
|
+
|
3897
|
+
assert isscalarlike(datsp.argmin())
|
3898
|
+
assert isinstance(datsp.argmin(axis=0), matrix_or_array)
|
3899
|
+
assert isinstance(datsp.argmin(axis=1), matrix_or_array)
|
3900
|
+
|
3901
|
+
assert isscalarlike(datsp.argmax())
|
3902
|
+
assert isinstance(datsp.argmax(axis=0), matrix_or_array)
|
3903
|
+
assert isinstance(datsp.argmax(axis=1), matrix_or_array)
|
3904
|
+
|
3835
3905
|
def test_nanminmax(self):
|
3836
3906
|
D = self.asdense(np.arange(50).reshape(5,10), dtype=float)
|
3837
3907
|
D[1, :] = 0
|
@@ -3850,6 +3920,10 @@ class _TestMinMax:
|
|
3850
3920
|
assert np.isscalar(X_nan_minimum)
|
3851
3921
|
assert X_nan_minimum == np.nanmin(D)
|
3852
3922
|
|
3923
|
+
X_nan_minimum = X.nanmin(axis=(0, 1))
|
3924
|
+
assert np.isscalar(X_nan_minimum)
|
3925
|
+
assert X_nan_minimum == np.nanmin(D, axis=(0, 1))
|
3926
|
+
|
3853
3927
|
axes = [-2, -1, 0, 1]
|
3854
3928
|
for axis in axes:
|
3855
3929
|
X_nan_maxima = X.nanmax(axis=axis)
|
@@ -3867,11 +3941,12 @@ class _TestMinMax:
|
|
3867
3941
|
datsp = self.spcreator(dat)
|
3868
3942
|
|
3869
3943
|
for fname in ('min', 'max'):
|
3944
|
+
datfunc = getattr(dat, fname)
|
3870
3945
|
func = getattr(datsp, fname)
|
3871
3946
|
assert_raises(ValueError, func, axis=3)
|
3872
|
-
assert_raises(TypeError, func, axis=(0, 1))
|
3873
3947
|
assert_raises(TypeError, func, axis=1.5)
|
3874
3948
|
assert_raises(ValueError, func, axis=1, out=1)
|
3949
|
+
assert_equal(func(axis=(0, 1)), datfunc(axis=(0, 1)))
|
3875
3950
|
|
3876
3951
|
def test_numpy_minmax(self):
|
3877
3952
|
# See gh-5987
|
@@ -3921,6 +3996,13 @@ class _TestMinMax:
|
|
3921
3996
|
assert_equal(mat.argmax(axis=1), np.argmax(D, axis=1))
|
3922
3997
|
assert_equal(mat.argmin(axis=1), np.argmin(D, axis=1))
|
3923
3998
|
|
3999
|
+
# full matrix with explicit=True
|
4000
|
+
mat = self.spcreator(self.asdense(D5))
|
4001
|
+
assert_equal(mat.argmax(explicit=True), 5)
|
4002
|
+
assert_equal((-mat).argmax(explicit=True), 2)
|
4003
|
+
assert_equal(mat.argmin(explicit=True), 2)
|
4004
|
+
assert_equal((-mat).argmin(explicit=True), 5)
|
4005
|
+
|
3924
4006
|
# zero-size matrices
|
3925
4007
|
D6 = self.spcreator(np.empty((0, 5)))
|
3926
4008
|
D7 = self.spcreator(np.empty((5, 0)))
|
@@ -4343,6 +4425,12 @@ class TestCSRMatrix(_MatrixMixin, TestCSR):
|
|
4343
4425
|
with suppress_warnings() as sup:
|
4344
4426
|
sup.filter(SparseEfficiencyWarning, "Changing the sparsity structure")
|
4345
4427
|
return csr_matrix(*args, **kwargs)
|
4428
|
+
|
4429
|
+
def test_spmatrix_subscriptable(self):
|
4430
|
+
result = csr_matrix[np.int8]
|
4431
|
+
assert isinstance(result, GenericAlias)
|
4432
|
+
assert result.__origin__ is csr_matrix
|
4433
|
+
assert result.__args__ == (np.int8,)
|
4346
4434
|
|
4347
4435
|
|
4348
4436
|
TestCSRMatrix.init_class()
|
@@ -4878,6 +4966,17 @@ class TestCOO(sparse_test_class(getset=False,
|
|
4878
4966
|
# Using __ne__ and nnz instead
|
4879
4967
|
assert_((mat1.reshape((1001, 3000001), order='C') != mat2).nnz == 0)
|
4880
4968
|
assert_((mat2.reshape((3000001, 1001), order='F') != mat1).nnz == 0)
|
4969
|
+
|
4970
|
+
def test_sparray_subscriptable(self):
|
4971
|
+
result = coo_array[np.int8, tuple[int]]
|
4972
|
+
assert isinstance(result, GenericAlias)
|
4973
|
+
assert result.__origin__ is coo_array
|
4974
|
+
assert result.__args__ == (np.int8, tuple[int])
|
4975
|
+
|
4976
|
+
result = coo_array[np.int8]
|
4977
|
+
assert isinstance(result, GenericAlias)
|
4978
|
+
assert result.__origin__ is coo_array
|
4979
|
+
assert result.__args__ == (np.int8,)
|
4881
4980
|
|
4882
4981
|
|
4883
4982
|
class TestCOOMatrix(_MatrixMixin, TestCOO):
|
@@ -4950,6 +5049,40 @@ class TestDIA(sparse_test_class(getset=False, slicing=False, slicing_assign=Fals
|
|
4950
5049
|
csc = dia.tocsc()
|
4951
5050
|
assert csc.indices.dtype == np.int32
|
4952
5051
|
|
5052
|
+
def test_add_sparse(self):
|
5053
|
+
# test format and cases not covered by common add tests
|
5054
|
+
A = diag([1, 2])
|
5055
|
+
B = A + diag([3], 1)
|
5056
|
+
Asp = dia_matrix(A)
|
5057
|
+
Bsp = dia_matrix(B)
|
5058
|
+
|
5059
|
+
Csp = Asp + Bsp
|
5060
|
+
assert isinstance(Csp, dia_matrix)
|
5061
|
+
assert_array_equal(Csp.toarray(), A + B)
|
5062
|
+
|
5063
|
+
Csp = Bsp + Asp
|
5064
|
+
assert isinstance(Csp, dia_matrix)
|
5065
|
+
assert_array_equal(Csp.toarray(), B + A)
|
5066
|
+
|
5067
|
+
def test_sub_sparse(self):
|
5068
|
+
# test format and cases not covered by common sub tests
|
5069
|
+
A = diag([1, 2])
|
5070
|
+
B = A + diag([3], 1)
|
5071
|
+
Asp = dia_matrix(A)
|
5072
|
+
Bsp = dia_matrix(B)
|
5073
|
+
|
5074
|
+
Csp = Asp - Bsp
|
5075
|
+
assert isinstance(Csp, dia_matrix)
|
5076
|
+
assert_array_equal(Csp.toarray(), A - B)
|
5077
|
+
|
5078
|
+
Csp = Bsp - Asp
|
5079
|
+
assert isinstance(Csp, dia_matrix)
|
5080
|
+
assert_array_equal(Csp.toarray(), B - A)
|
5081
|
+
|
5082
|
+
Bsp = Bsp.asformat('csr')
|
5083
|
+
assert_array_equal((Asp - Bsp).toarray(), A - B)
|
5084
|
+
assert_array_equal((Bsp - Asp).toarray(), B - A)
|
5085
|
+
|
4953
5086
|
def test_mul_scalar(self):
|
4954
5087
|
# repro for gh-20434
|
4955
5088
|
m = self.dia_container([[1, 2], [0, 4]])
|
@@ -4961,6 +5094,50 @@ class TestDIA(sparse_test_class(getset=False, slicing=False, slicing_assign=Fals
|
|
4961
5094
|
assert isinstance(res2, m.__class__)
|
4962
5095
|
assert_array_equal(res2.toarray(), [[3, 6], [0, 12]])
|
4963
5096
|
|
5097
|
+
def test_matmul_dia(self):
|
5098
|
+
# test DIA structure of DIA @ DIA:
|
5099
|
+
|
5100
|
+
# that all and only needed elements are used and produced
|
5101
|
+
A = array([[1, 2, 3],
|
5102
|
+
[4, 5, 6]])
|
5103
|
+
B = array([[11, 12],
|
5104
|
+
[13, 14],
|
5105
|
+
[15, 16]])
|
5106
|
+
Asp = dia_matrix(A)
|
5107
|
+
Bsp = dia_matrix(B)
|
5108
|
+
Asp.data[Asp.data == 0] = -1 # poison outside elements
|
5109
|
+
Bsp.data[Bsp.data == 0] = -1
|
5110
|
+
assert_array_equal(Asp.toarray(), A)
|
5111
|
+
assert_array_equal(Bsp.toarray(), B)
|
5112
|
+
|
5113
|
+
C = A @ B
|
5114
|
+
Csp = Asp @ Bsp
|
5115
|
+
assert isinstance(Csp, dia_matrix)
|
5116
|
+
assert_array_equal(Csp.toarray(), C)
|
5117
|
+
assert_array_equal(Csp.offsets, [-1, 0, 1])
|
5118
|
+
assert_array_equal(Csp.data, dia_matrix(C).data)
|
5119
|
+
|
5120
|
+
C = B @ A
|
5121
|
+
Csp = Bsp @ Asp
|
5122
|
+
assert isinstance(Csp, dia_matrix)
|
5123
|
+
assert_array_equal(Csp.toarray(), C)
|
5124
|
+
assert_array_equal(Csp.offsets, [-2, -1, 0, 1, 2])
|
5125
|
+
assert_array_equal(Csp.data, dia_matrix(C).data)
|
5126
|
+
|
5127
|
+
# short data and that order of input offsets doesn't matter
|
5128
|
+
Asp = dia_matrix(([[0., 1., 2.], [3., 4., 5.]], [1, -2]), (5, 5))
|
5129
|
+
Bsp = dia_matrix(([[6., 7., 8.], [0., 0., 9.]], [-1, 2]), (5, 5))
|
5130
|
+
|
5131
|
+
Csp = Asp @ Bsp
|
5132
|
+
assert_array_equal(Csp.offsets, array([-3, 0]))
|
5133
|
+
assert_array_equal(Csp.data, [[24., 35., 0.],
|
5134
|
+
[6., 14., 27.]])
|
5135
|
+
|
5136
|
+
Csp = Bsp @ Asp
|
5137
|
+
assert_array_equal(Csp.offsets, array([-3, 0]))
|
5138
|
+
assert_array_equal(Csp.data, [[24., 0., 0.],
|
5139
|
+
[27., 6., 14.]])
|
5140
|
+
|
4964
5141
|
|
4965
5142
|
class TestDIAMatrix(_MatrixMixin, TestDIA):
|
4966
5143
|
spcreator = dia_matrix
|
@@ -4,13 +4,13 @@ import pytest
|
|
4
4
|
|
5
5
|
import numpy as np
|
6
6
|
from numpy.testing import assert_equal, assert_allclose
|
7
|
+
from numpy.exceptions import ComplexWarning
|
7
8
|
|
8
9
|
from scipy.sparse import (
|
9
10
|
bsr_array, csc_array, dia_array, lil_array,
|
10
11
|
coo_array, csr_array, dok_array,
|
11
12
|
)
|
12
13
|
from scipy.sparse._sputils import supported_dtypes, matrix
|
13
|
-
from scipy._lib._util import ComplexWarning
|
14
14
|
|
15
15
|
|
16
16
|
sup_complex = np.testing.suppress_warnings()
|
@@ -136,13 +136,13 @@ class TestCommon1D:
|
|
136
136
|
dat = np.array([0, 1, 2])
|
137
137
|
datsp = spcreator(dat)
|
138
138
|
|
139
|
-
with pytest.raises(ValueError, match='axis
|
139
|
+
with pytest.raises(ValueError, match='axis out of range'):
|
140
140
|
datsp.sum(axis=1)
|
141
|
-
with pytest.raises(
|
142
|
-
datsp.sum(axis=(0,
|
141
|
+
with pytest.raises(ValueError, match='axis out of range'):
|
142
|
+
datsp.sum(axis=(0, 3))
|
143
143
|
with pytest.raises(TypeError, match='axis must be an integer'):
|
144
144
|
datsp.sum(axis=1.5)
|
145
|
-
with pytest.raises(ValueError, match='
|
145
|
+
with pytest.raises(ValueError, match='output parameter.*wrong.*dimension'):
|
146
146
|
datsp.sum(axis=0, out=out)
|
147
147
|
|
148
148
|
def test_numpy_sum(self, spcreator):
|
@@ -176,11 +176,11 @@ class TestCommon1D:
|
|
176
176
|
datsp = spcreator(dat)
|
177
177
|
with pytest.raises(ValueError, match='axis out of range'):
|
178
178
|
datsp.mean(axis=3)
|
179
|
-
with pytest.raises(
|
180
|
-
datsp.mean(axis=(0,
|
179
|
+
with pytest.raises(ValueError, match='axis out of range'):
|
180
|
+
datsp.mean(axis=(0, 3))
|
181
181
|
with pytest.raises(TypeError, match='axis must be an integer'):
|
182
182
|
datsp.mean(axis=1.5)
|
183
|
-
with pytest.raises(ValueError, match='
|
183
|
+
with pytest.raises(ValueError, match='out.*not match shape'):
|
184
184
|
datsp.mean(axis=1, out=out)
|
185
185
|
|
186
186
|
def test_sum_dtype(self, spcreator):
|
@@ -209,17 +209,22 @@ class TestCommon1D:
|
|
209
209
|
dat = np.array([0, 1, 2])
|
210
210
|
datsp = spcreator(dat)
|
211
211
|
|
212
|
-
dat_out = np.array(
|
213
|
-
datsp_out = np.array(
|
212
|
+
dat_out = np.array(0)
|
213
|
+
datsp_out = np.array(0)
|
214
214
|
|
215
|
-
dat.mean(out=dat_out
|
215
|
+
dat.mean(out=dat_out)
|
216
216
|
datsp.mean(out=datsp_out)
|
217
217
|
assert_allclose(dat_out, datsp_out)
|
218
218
|
|
219
|
-
dat.mean(axis=0, out=dat_out
|
219
|
+
dat.mean(axis=0, out=dat_out)
|
220
220
|
datsp.mean(axis=0, out=datsp_out)
|
221
221
|
assert_allclose(dat_out, datsp_out)
|
222
222
|
|
223
|
+
with pytest.raises(ValueError, match="output parameter.*dimension"):
|
224
|
+
datsp.mean(out=np.array([0]))
|
225
|
+
with pytest.raises(ValueError, match="output parameter.*dimension"):
|
226
|
+
datsp.mean(out=np.array([[0]]))
|
227
|
+
|
223
228
|
def test_numpy_mean(self, spcreator):
|
224
229
|
dat = np.array([0, 1, 2])
|
225
230
|
datsp = spcreator(dat)
|
@@ -673,7 +673,7 @@ class TestConstructUtils:
|
|
673
673
|
assert isinstance(bmat([[Gm.tocsc(), Gm]], format="csr"), spmatrix)
|
674
674
|
assert isinstance(bmat([[Gm, Gm]], format="csc"), spmatrix)
|
675
675
|
|
676
|
-
@pytest.mark.
|
676
|
+
@pytest.mark.xslow
|
677
677
|
@pytest.mark.thread_unsafe
|
678
678
|
@pytest.mark.xfail_on_32bit("Can't create large array for test")
|
679
679
|
def test_concatenate_int32_overflow(self):
|