scipy 1.15.2__cp313-cp313t-macosx_14_0_arm64.whl → 1.16.0__cp313-cp313t-macosx_14_0_arm64.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/.dylibs/libgcc_s.1.1.dylib +0 -0
- scipy/.dylibs/libgfortran.5.dylib +0 -0
- scipy/.dylibs/libquadmath.0.dylib +0 -0
- scipy/__config__.py +5 -5
- scipy/__init__.py +3 -6
- scipy/_cyutility.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cpython-313t-darwin.so +0 -0
- scipy/_lib/_test_deprecation_call.cpython-313t-darwin.so +0 -0
- scipy/_lib/_test_deprecation_def.cpython-313t-darwin.so +0 -0
- scipy/_lib/_testutils.py +6 -2
- 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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/cluster/_optimal_leaf_ordering.cpython-313t-darwin.so +0 -0
- scipy/cluster/_vq.cpython-313t-darwin.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 +282 -151
- 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/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-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cpython-313t-darwin.so +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cpython-313t-darwin.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_odeint_banded.cpython-313t-darwin.so +0 -0
- scipy/integrate/_vode.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/interpolate/_dierckx.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_fitpack.cpython-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cpython-313t-darwin.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/_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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/io/matlab/_mio_utils.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cpython-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cpython-313t-darwin.so +0 -0
- scipy/linalg/_flapack.cpython-313t-darwin.so +0 -0
- scipy/linalg/_linalg_pythran.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cpython-313t-darwin.so +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cpython-313t-darwin.so +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/blas.py +35 -24
- scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
- scipy/linalg/cython_lapack.cpython-313t-darwin.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/_cytest.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_delegators.py +8 -2
- scipy/ndimage/_filters.py +453 -5
- scipy/ndimage/_interpolation.py +36 -6
- scipy/ndimage/_measurements.py +4 -2
- scipy/ndimage/_morphology.py +5 -0
- scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_ndimage_api.py +2 -1
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_support_alternative_backends.py +18 -6
- scipy/ndimage/tests/test_filters.py +384 -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-313t-darwin.so +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
- scipy/optimize/_highspy/_highs_wrapper.py +6 -4
- scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lbfgsb_py.py +80 -24
- 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-313t-darwin.so +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cpython-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.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 +6 -6
- 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 +98 -20
- 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-313t-darwin.so +0 -0
- scipy/signal/_peak_finding_utils.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
- scipy/signal/_spectral_py.py +230 -50
- scipy/signal/_spline.cpython-313t-darwin.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-313t-darwin.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 +2150 -1349
- scipy/signal/tests/test_spectral.py +50 -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-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_traversal.cpython-313t-darwin.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-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.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 +224 -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-313t-darwin.so +0 -0
- scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
- scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
- scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
- scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
- scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
- scipy/spatial/distance.py +49 -42
- scipy/spatial/tests/test_distance.py +15 -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-313t-darwin.so +0 -0
- scipy/spatial/transform/_rotation.cpython-313t-darwin.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-313t-darwin.so +0 -0
- scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
- scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_logsumexp.py +83 -69
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cpython-313t-darwin.so +0 -0
- scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cpython-313t-darwin.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-313t-darwin.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-313t-darwin.so +0 -0
- scipy/stats/_axis_nan_policy.py +5 -12
- scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
- scipy/stats/_continued_fraction.py +387 -0
- scipy/stats/_continuous_distns.py +296 -319
- scipy/stats/_correlation.py +1 -1
- 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 +920 -238
- scipy/stats/_entropy.py +9 -10
- scipy/{_lib → stats}/_finite_differences.py +1 -1
- scipy/stats/_hypotests.py +83 -50
- 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-313t-darwin.so +0 -0
- scipy/stats/_morestats.py +118 -73
- 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-313t-darwin.so +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
- scipy/stats/_resampling.py +5 -30
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
- scipy/stats/_stats.cpython-313t-darwin.so +0 -0
- scipy/stats/_stats_mstats_common.py +21 -2
- scipy/stats/_stats_py.py +551 -477
- scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
- scipy/stats/_variation.py +6 -8
- 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 +81 -49
- 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.0.dist-info}/LICENSE.txt +4 -4
- {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/METADATA +12 -12
- {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/RECORD +574 -581
- scipy-1.16.0.dist-info/WHEEL +6 -0
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
- scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
- scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
- scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.dylib +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-313t-darwin.so +0 -0
- scipy-1.15.2.dist-info/WHEEL +0 -4
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
|
|
@@ -431,6 +433,13 @@ class _TestCommon:
|
|
431
433
|
for dtype in self.checked_dtypes:
|
432
434
|
check(dtype)
|
433
435
|
|
436
|
+
def test_eq_ne_different_shapes(self):
|
437
|
+
if self.datsp.format not in ['bsr', 'csc', 'csr']:
|
438
|
+
pytest.skip("Bool comparisons only implemented for BSR, CSC, and CSR.")
|
439
|
+
# Is this what we want? numpy raises when shape differs. we return False.
|
440
|
+
assert (self.datsp == self.datsp.T) is False
|
441
|
+
assert (self.datsp != self.datsp.T) is True
|
442
|
+
|
434
443
|
def test_lt(self):
|
435
444
|
sup = suppress_warnings()
|
436
445
|
sup.filter(SparseEfficiencyWarning)
|
@@ -1021,10 +1030,8 @@ class _TestCommon:
|
|
1021
1030
|
assert_array_almost_equal(dat.sum(), datsp.sum())
|
1022
1031
|
assert_equal(dat.sum().dtype, datsp.sum().dtype)
|
1023
1032
|
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)
|
1033
|
+
assert_array_almost_equal(dat.sum(axis=None), datsp.sum(axis=None))
|
1034
|
+
assert_equal(dat.sum(axis=None).dtype, datsp.sum(axis=None).dtype)
|
1028
1035
|
assert_array_almost_equal(dat.sum(axis=0), datsp.sum(axis=0))
|
1029
1036
|
assert_equal(dat.sum(axis=0).dtype, datsp.sum(axis=0).dtype)
|
1030
1037
|
assert_array_almost_equal(dat.sum(axis=1), datsp.sum(axis=1))
|
@@ -1033,6 +1040,8 @@ class _TestCommon:
|
|
1033
1040
|
assert_equal(dat.sum(axis=-2).dtype, datsp.sum(axis=-2).dtype)
|
1034
1041
|
assert_array_almost_equal(dat.sum(axis=-1), datsp.sum(axis=-1))
|
1035
1042
|
assert_equal(dat.sum(axis=-1).dtype, datsp.sum(axis=-1).dtype)
|
1043
|
+
assert_array_almost_equal(dat.sum(axis=(0, 1)), datsp.sum(axis=(0, 1)))
|
1044
|
+
assert_equal(dat.sum(axis=(0, 1)).dtype, datsp.sum(axis=(0, 1)).dtype)
|
1036
1045
|
|
1037
1046
|
for dtype in self.checked_dtypes:
|
1038
1047
|
for j in range(len(matrices)):
|
@@ -1045,10 +1054,15 @@ class _TestCommon:
|
|
1045
1054
|
[-6, 7, 9]])
|
1046
1055
|
datsp = self.spcreator(dat)
|
1047
1056
|
|
1048
|
-
assert_raises(ValueError,
|
1049
|
-
|
1050
|
-
assert_raises(
|
1051
|
-
|
1057
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1058
|
+
datsp.sum(axis=3)
|
1059
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1060
|
+
datsp.sum(axis=(0, 3))
|
1061
|
+
with assert_raises(TypeError, match="axis must be an integer"):
|
1062
|
+
datsp.sum(axis=1.5)
|
1063
|
+
# error msg varies by sparray (1d result) or spmatrix (2d result)
|
1064
|
+
with assert_raises(ValueError, match="do.*n.t match.*shape|wrong.*dimensions"):
|
1065
|
+
datsp.mean(axis=1, out=out)
|
1052
1066
|
|
1053
1067
|
def test_sum_dtype(self):
|
1054
1068
|
dat = array([[0, 1, 2],
|
@@ -1087,6 +1101,12 @@ class _TestCommon:
|
|
1087
1101
|
datsp.sum(axis=1, out=datsp_out)
|
1088
1102
|
assert_array_almost_equal(dat_out, datsp_out)
|
1089
1103
|
|
1104
|
+
# check that wrong shape out parameter raises
|
1105
|
+
with assert_raises(ValueError, match="output parameter"):
|
1106
|
+
datsp.sum(out=array([0]))
|
1107
|
+
with assert_raises(ValueError, match="output parameter"):
|
1108
|
+
datsp.sum(out=array([[0]] if self.is_array_test else 0))
|
1109
|
+
|
1090
1110
|
def test_numpy_sum(self):
|
1091
1111
|
# See gh-5987
|
1092
1112
|
dat = array([[0, 1, 2],
|
@@ -1100,6 +1120,21 @@ class _TestCommon:
|
|
1100
1120
|
assert_array_almost_equal(dat_sum, datsp_sum)
|
1101
1121
|
assert_equal(dat_sum.dtype, datsp_sum.dtype)
|
1102
1122
|
|
1123
|
+
def test_sum_mean_container_type(self):
|
1124
|
+
dat = array([[0, 1, 2],
|
1125
|
+
[3, -4, 5],
|
1126
|
+
[-6, 7, 9]])
|
1127
|
+
datsp = self.spcreator(dat)
|
1128
|
+
|
1129
|
+
assert isscalarlike(datsp.sum())
|
1130
|
+
matrix_or_array = ndarray if self.is_array_test else np.matrix
|
1131
|
+
assert isinstance(datsp.sum(axis=0), matrix_or_array)
|
1132
|
+
assert isinstance(datsp.sum(axis=1), matrix_or_array)
|
1133
|
+
|
1134
|
+
assert isscalarlike(datsp.mean())
|
1135
|
+
assert isinstance(datsp.mean(axis=0), matrix_or_array)
|
1136
|
+
assert isinstance(datsp.mean(axis=1), matrix_or_array)
|
1137
|
+
|
1103
1138
|
def test_mean(self):
|
1104
1139
|
keep = not self.is_array_test
|
1105
1140
|
def check(dtype):
|
@@ -1131,21 +1166,31 @@ class _TestCommon:
|
|
1131
1166
|
dat.mean(axis=-1, keepdims=keep), datsp.mean(axis=-1)
|
1132
1167
|
)
|
1133
1168
|
assert_equal(dat.mean(axis=-1).dtype, datsp.mean(axis=-1).dtype)
|
1169
|
+
assert_array_almost_equal(
|
1170
|
+
dat.mean(axis=(0, 1), keepdims=keep), datsp.mean(axis=(0, 1))
|
1171
|
+
)
|
1172
|
+
assert_equal(dat.mean(axis=(0, 1)).dtype, datsp.mean(axis=(0, 1)).dtype)
|
1173
|
+
|
1134
1174
|
|
1135
1175
|
for dtype in self.checked_dtypes:
|
1136
1176
|
check(dtype)
|
1137
1177
|
|
1138
|
-
def
|
1178
|
+
def test_mean_invalid_param(self):
|
1139
1179
|
out = self.asdense(np.zeros((1, 3)))
|
1140
1180
|
dat = array([[0, 1, 2],
|
1141
1181
|
[3, -4, 5],
|
1142
1182
|
[-6, 7, 9]])
|
1143
1183
|
datsp = self.spcreator(dat)
|
1144
1184
|
|
1145
|
-
assert_raises(ValueError,
|
1146
|
-
|
1147
|
-
assert_raises(
|
1148
|
-
|
1185
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1186
|
+
datsp.mean(axis=3)
|
1187
|
+
with assert_raises(ValueError, match="axis out of range"):
|
1188
|
+
datsp.mean(axis=(0, 3))
|
1189
|
+
with assert_raises(TypeError, match="axis must be an integer"):
|
1190
|
+
datsp.mean(axis=1.5)
|
1191
|
+
# error msg varies by sparray (1d result) or spmatrix (2d result)
|
1192
|
+
with assert_raises(ValueError, match="do.*n.t match.*shape|wrong.*dimensions"):
|
1193
|
+
datsp.mean(axis=1, out=out)
|
1149
1194
|
|
1150
1195
|
def test_mean_dtype(self):
|
1151
1196
|
dat = array([[0, 1, 2],
|
@@ -1184,6 +1229,12 @@ class _TestCommon:
|
|
1184
1229
|
datsp.mean(axis=1, out=datsp_out)
|
1185
1230
|
assert_array_almost_equal(dat_out, datsp_out)
|
1186
1231
|
|
1232
|
+
# check that wrong shape out parameter raises
|
1233
|
+
with assert_raises(ValueError, match="output parameter.*wrong.*dimension"):
|
1234
|
+
datsp.mean(out=array([0]))
|
1235
|
+
with assert_raises(ValueError, match="output parameter.*wrong.*dimension"):
|
1236
|
+
datsp.mean(out=array([[0]] if self.is_array_test else 0))
|
1237
|
+
|
1187
1238
|
def test_numpy_mean(self):
|
1188
1239
|
# See gh-5987
|
1189
1240
|
dat = array([[0, 1, 2],
|
@@ -1637,7 +1688,10 @@ class _TestCommon:
|
|
1637
1688
|
except ValueError:
|
1638
1689
|
assert_raises(ValueError, i.multiply, j)
|
1639
1690
|
continue
|
1640
|
-
|
1691
|
+
try:
|
1692
|
+
sp_mult = i.multiply(j)
|
1693
|
+
except ValueError:
|
1694
|
+
continue
|
1641
1695
|
if issparse(sp_mult):
|
1642
1696
|
assert_almost_equal(sp_mult.toarray(), dense_mult)
|
1643
1697
|
else:
|
@@ -1683,13 +1737,7 @@ class _TestCommon:
|
|
1683
1737
|
B = self.spcreator(A)
|
1684
1738
|
|
1685
1739
|
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]:
|
1740
|
+
for exponent in [1, 2, 2.2, 3, 1+3j]:
|
1693
1741
|
ret_sp = B**exponent
|
1694
1742
|
ret_np = A**exponent
|
1695
1743
|
assert_array_equal(ret_sp.toarray(), ret_np)
|
@@ -2060,8 +2108,8 @@ class _TestCommon:
|
|
2060
2108
|
|
2061
2109
|
with suppress_warnings() as sup:
|
2062
2110
|
sup.filter(SparseEfficiencyWarning,
|
2063
|
-
"Taking maximum
|
2064
|
-
"results
|
2111
|
+
"Taking (maximum|minimum) with a (positive|negative) number "
|
2112
|
+
"results in a dense matrix")
|
2065
2113
|
|
2066
2114
|
max_s = A.maximum(B)
|
2067
2115
|
min_s = A.minimum(B)
|
@@ -2354,20 +2402,14 @@ class _TestInplaceArithmetic:
|
|
2354
2402
|
|
2355
2403
|
# Matrix multiply from __rmatmul__
|
2356
2404
|
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)
|
2405
|
+
y @= b.T
|
2406
|
+
x = a.copy()
|
2407
|
+
y = a.copy()
|
2408
|
+
with assert_raises(ValueError, match="dimension mismatch"):
|
2409
|
+
x @= b
|
2410
|
+
x = x.dot(a.T)
|
2411
|
+
y @= b.T
|
2412
|
+
assert_array_equal(x, y)
|
2371
2413
|
|
2372
2414
|
# Floor division is not supported
|
2373
2415
|
with assert_raises(TypeError, match="unsupported operand"):
|
@@ -3708,9 +3750,11 @@ class _TestMinMax:
|
|
3708
3750
|
X = self.spcreator(np.arange(1, 10).reshape(3, 3))
|
3709
3751
|
assert_equal(X.min(), 1)
|
3710
3752
|
assert_equal(X.min().dtype, X.dtype)
|
3753
|
+
assert_equal(X.min(explicit=True), 1)
|
3711
3754
|
|
3712
3755
|
X = -X
|
3713
3756
|
assert_equal(X.max(), -1)
|
3757
|
+
assert_equal(X.max(explicit=True), -1)
|
3714
3758
|
|
3715
3759
|
# and a fully sparse matrix
|
3716
3760
|
Z = self.spcreator(np.zeros((1, 1)))
|
@@ -3785,6 +3829,7 @@ class _TestMinMax:
|
|
3785
3829
|
assert_array_equal(
|
3786
3830
|
X.min(axis=axis).toarray(), D.min(axis=axis, keepdims=keep)
|
3787
3831
|
)
|
3832
|
+
assert_equal(X.max(axis=(0, 1)), D.max(axis=(0, 1), keepdims=keep))
|
3788
3833
|
|
3789
3834
|
for axis in axes_even:
|
3790
3835
|
expected_max = D[-1, :]
|
@@ -3832,6 +3877,38 @@ class _TestMinMax:
|
|
3832
3877
|
assert_equal(X.max(axis=axis, explicit=ex).toarray(), D.max(axis=axis))
|
3833
3878
|
assert_equal(X.min(axis=axis, explicit=ex).toarray(), D.min(axis=axis))
|
3834
3879
|
|
3880
|
+
def test_minmax_container_type(self):
|
3881
|
+
dat = array([[0, 1, 2],
|
3882
|
+
[3, -4, 5],
|
3883
|
+
[-6, 7, 9]])
|
3884
|
+
datsp = self.spcreator(dat)
|
3885
|
+
matrix_or_array = ndarray if self.is_array_test else np.matrix
|
3886
|
+
spmatrix_or_sparray = sparray if self.is_array_test else spmatrix
|
3887
|
+
|
3888
|
+
assert isscalarlike(datsp.min())
|
3889
|
+
assert isinstance(datsp.min(axis=0), spmatrix_or_sparray)
|
3890
|
+
assert isinstance(datsp.min(axis=1), spmatrix_or_sparray)
|
3891
|
+
|
3892
|
+
assert isscalarlike(datsp.max())
|
3893
|
+
assert isinstance(datsp.max(axis=0), spmatrix_or_sparray)
|
3894
|
+
assert isinstance(datsp.max(axis=1), spmatrix_or_sparray)
|
3895
|
+
|
3896
|
+
assert isscalarlike(datsp.nanmin())
|
3897
|
+
assert isinstance(datsp.nanmin(axis=0), spmatrix_or_sparray)
|
3898
|
+
assert isinstance(datsp.nanmin(axis=1), spmatrix_or_sparray)
|
3899
|
+
|
3900
|
+
assert isscalarlike(datsp.nanmax())
|
3901
|
+
assert isinstance(datsp.nanmax(axis=0), spmatrix_or_sparray)
|
3902
|
+
assert isinstance(datsp.nanmax(axis=1), spmatrix_or_sparray)
|
3903
|
+
|
3904
|
+
assert isscalarlike(datsp.argmin())
|
3905
|
+
assert isinstance(datsp.argmin(axis=0), matrix_or_array)
|
3906
|
+
assert isinstance(datsp.argmin(axis=1), matrix_or_array)
|
3907
|
+
|
3908
|
+
assert isscalarlike(datsp.argmax())
|
3909
|
+
assert isinstance(datsp.argmax(axis=0), matrix_or_array)
|
3910
|
+
assert isinstance(datsp.argmax(axis=1), matrix_or_array)
|
3911
|
+
|
3835
3912
|
def test_nanminmax(self):
|
3836
3913
|
D = self.asdense(np.arange(50).reshape(5,10), dtype=float)
|
3837
3914
|
D[1, :] = 0
|
@@ -3850,6 +3927,10 @@ class _TestMinMax:
|
|
3850
3927
|
assert np.isscalar(X_nan_minimum)
|
3851
3928
|
assert X_nan_minimum == np.nanmin(D)
|
3852
3929
|
|
3930
|
+
X_nan_minimum = X.nanmin(axis=(0, 1))
|
3931
|
+
assert np.isscalar(X_nan_minimum)
|
3932
|
+
assert X_nan_minimum == np.nanmin(D, axis=(0, 1))
|
3933
|
+
|
3853
3934
|
axes = [-2, -1, 0, 1]
|
3854
3935
|
for axis in axes:
|
3855
3936
|
X_nan_maxima = X.nanmax(axis=axis)
|
@@ -3867,11 +3948,12 @@ class _TestMinMax:
|
|
3867
3948
|
datsp = self.spcreator(dat)
|
3868
3949
|
|
3869
3950
|
for fname in ('min', 'max'):
|
3951
|
+
datfunc = getattr(dat, fname)
|
3870
3952
|
func = getattr(datsp, fname)
|
3871
3953
|
assert_raises(ValueError, func, axis=3)
|
3872
|
-
assert_raises(TypeError, func, axis=(0, 1))
|
3873
3954
|
assert_raises(TypeError, func, axis=1.5)
|
3874
3955
|
assert_raises(ValueError, func, axis=1, out=1)
|
3956
|
+
assert_equal(func(axis=(0, 1)), datfunc(axis=(0, 1)))
|
3875
3957
|
|
3876
3958
|
def test_numpy_minmax(self):
|
3877
3959
|
# See gh-5987
|
@@ -3921,6 +4003,13 @@ class _TestMinMax:
|
|
3921
4003
|
assert_equal(mat.argmax(axis=1), np.argmax(D, axis=1))
|
3922
4004
|
assert_equal(mat.argmin(axis=1), np.argmin(D, axis=1))
|
3923
4005
|
|
4006
|
+
# full matrix with explicit=True
|
4007
|
+
mat = self.spcreator(self.asdense(D5))
|
4008
|
+
assert_equal(mat.argmax(explicit=True), 5)
|
4009
|
+
assert_equal((-mat).argmax(explicit=True), 2)
|
4010
|
+
assert_equal(mat.argmin(explicit=True), 2)
|
4011
|
+
assert_equal((-mat).argmin(explicit=True), 5)
|
4012
|
+
|
3924
4013
|
# zero-size matrices
|
3925
4014
|
D6 = self.spcreator(np.empty((0, 5)))
|
3926
4015
|
D7 = self.spcreator(np.empty((5, 0)))
|
@@ -4343,6 +4432,12 @@ class TestCSRMatrix(_MatrixMixin, TestCSR):
|
|
4343
4432
|
with suppress_warnings() as sup:
|
4344
4433
|
sup.filter(SparseEfficiencyWarning, "Changing the sparsity structure")
|
4345
4434
|
return csr_matrix(*args, **kwargs)
|
4435
|
+
|
4436
|
+
def test_spmatrix_subscriptable(self):
|
4437
|
+
result = csr_matrix[np.int8]
|
4438
|
+
assert isinstance(result, GenericAlias)
|
4439
|
+
assert result.__origin__ is csr_matrix
|
4440
|
+
assert result.__args__ == (np.int8,)
|
4346
4441
|
|
4347
4442
|
|
4348
4443
|
TestCSRMatrix.init_class()
|
@@ -4878,6 +4973,17 @@ class TestCOO(sparse_test_class(getset=False,
|
|
4878
4973
|
# Using __ne__ and nnz instead
|
4879
4974
|
assert_((mat1.reshape((1001, 3000001), order='C') != mat2).nnz == 0)
|
4880
4975
|
assert_((mat2.reshape((3000001, 1001), order='F') != mat1).nnz == 0)
|
4976
|
+
|
4977
|
+
def test_sparray_subscriptable(self):
|
4978
|
+
result = coo_array[np.int8, tuple[int]]
|
4979
|
+
assert isinstance(result, GenericAlias)
|
4980
|
+
assert result.__origin__ is coo_array
|
4981
|
+
assert result.__args__ == (np.int8, tuple[int])
|
4982
|
+
|
4983
|
+
result = coo_array[np.int8]
|
4984
|
+
assert isinstance(result, GenericAlias)
|
4985
|
+
assert result.__origin__ is coo_array
|
4986
|
+
assert result.__args__ == (np.int8,)
|
4881
4987
|
|
4882
4988
|
|
4883
4989
|
class TestCOOMatrix(_MatrixMixin, TestCOO):
|
@@ -4950,6 +5056,40 @@ class TestDIA(sparse_test_class(getset=False, slicing=False, slicing_assign=Fals
|
|
4950
5056
|
csc = dia.tocsc()
|
4951
5057
|
assert csc.indices.dtype == np.int32
|
4952
5058
|
|
5059
|
+
def test_add_sparse(self):
|
5060
|
+
# test format and cases not covered by common add tests
|
5061
|
+
A = diag([1, 2])
|
5062
|
+
B = A + diag([3], 1)
|
5063
|
+
Asp = dia_matrix(A)
|
5064
|
+
Bsp = dia_matrix(B)
|
5065
|
+
|
5066
|
+
Csp = Asp + Bsp
|
5067
|
+
assert isinstance(Csp, dia_matrix)
|
5068
|
+
assert_array_equal(Csp.toarray(), A + B)
|
5069
|
+
|
5070
|
+
Csp = Bsp + Asp
|
5071
|
+
assert isinstance(Csp, dia_matrix)
|
5072
|
+
assert_array_equal(Csp.toarray(), B + A)
|
5073
|
+
|
5074
|
+
def test_sub_sparse(self):
|
5075
|
+
# test format and cases not covered by common sub tests
|
5076
|
+
A = diag([1, 2])
|
5077
|
+
B = A + diag([3], 1)
|
5078
|
+
Asp = dia_matrix(A)
|
5079
|
+
Bsp = dia_matrix(B)
|
5080
|
+
|
5081
|
+
Csp = Asp - Bsp
|
5082
|
+
assert isinstance(Csp, dia_matrix)
|
5083
|
+
assert_array_equal(Csp.toarray(), A - B)
|
5084
|
+
|
5085
|
+
Csp = Bsp - Asp
|
5086
|
+
assert isinstance(Csp, dia_matrix)
|
5087
|
+
assert_array_equal(Csp.toarray(), B - A)
|
5088
|
+
|
5089
|
+
Bsp = Bsp.asformat('csr')
|
5090
|
+
assert_array_equal((Asp - Bsp).toarray(), A - B)
|
5091
|
+
assert_array_equal((Bsp - Asp).toarray(), B - A)
|
5092
|
+
|
4953
5093
|
def test_mul_scalar(self):
|
4954
5094
|
# repro for gh-20434
|
4955
5095
|
m = self.dia_container([[1, 2], [0, 4]])
|
@@ -4961,6 +5101,50 @@ class TestDIA(sparse_test_class(getset=False, slicing=False, slicing_assign=Fals
|
|
4961
5101
|
assert isinstance(res2, m.__class__)
|
4962
5102
|
assert_array_equal(res2.toarray(), [[3, 6], [0, 12]])
|
4963
5103
|
|
5104
|
+
def test_matmul_dia(self):
|
5105
|
+
# test DIA structure of DIA @ DIA:
|
5106
|
+
|
5107
|
+
# that all and only needed elements are used and produced
|
5108
|
+
A = array([[1, 2, 3],
|
5109
|
+
[4, 5, 6]])
|
5110
|
+
B = array([[11, 12],
|
5111
|
+
[13, 14],
|
5112
|
+
[15, 16]])
|
5113
|
+
Asp = dia_matrix(A)
|
5114
|
+
Bsp = dia_matrix(B)
|
5115
|
+
Asp.data[Asp.data == 0] = -1 # poison outside elements
|
5116
|
+
Bsp.data[Bsp.data == 0] = -1
|
5117
|
+
assert_array_equal(Asp.toarray(), A)
|
5118
|
+
assert_array_equal(Bsp.toarray(), B)
|
5119
|
+
|
5120
|
+
C = A @ B
|
5121
|
+
Csp = Asp @ Bsp
|
5122
|
+
assert isinstance(Csp, dia_matrix)
|
5123
|
+
assert_array_equal(Csp.toarray(), C)
|
5124
|
+
assert_array_equal(Csp.offsets, [-1, 0, 1])
|
5125
|
+
assert_array_equal(Csp.data, dia_matrix(C).data)
|
5126
|
+
|
5127
|
+
C = B @ A
|
5128
|
+
Csp = Bsp @ Asp
|
5129
|
+
assert isinstance(Csp, dia_matrix)
|
5130
|
+
assert_array_equal(Csp.toarray(), C)
|
5131
|
+
assert_array_equal(Csp.offsets, [-2, -1, 0, 1, 2])
|
5132
|
+
assert_array_equal(Csp.data, dia_matrix(C).data)
|
5133
|
+
|
5134
|
+
# short data and that order of input offsets doesn't matter
|
5135
|
+
Asp = dia_matrix(([[0., 1., 2.], [3., 4., 5.]], [1, -2]), (5, 5))
|
5136
|
+
Bsp = dia_matrix(([[6., 7., 8.], [0., 0., 9.]], [-1, 2]), (5, 5))
|
5137
|
+
|
5138
|
+
Csp = Asp @ Bsp
|
5139
|
+
assert_array_equal(Csp.offsets, array([-3, 0]))
|
5140
|
+
assert_array_equal(Csp.data, [[24., 35., 0.],
|
5141
|
+
[6., 14., 27.]])
|
5142
|
+
|
5143
|
+
Csp = Bsp @ Asp
|
5144
|
+
assert_array_equal(Csp.offsets, array([-3, 0]))
|
5145
|
+
assert_array_equal(Csp.data, [[24., 0., 0.],
|
5146
|
+
[27., 6., 14.]])
|
5147
|
+
|
4964
5148
|
|
4965
5149
|
class TestDIAMatrix(_MatrixMixin, TestDIA):
|
4966
5150
|
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):
|