numpy 2.3.5__cp313-cp313-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.
Potentially problematic release.
This version of numpy might be problematic. Click here for more details.
- numpy/__config__.py +170 -0
- numpy/__config__.pyi +102 -0
- numpy/__init__.cython-30.pxd +1241 -0
- numpy/__init__.pxd +1154 -0
- numpy/__init__.py +945 -0
- numpy/__init__.pyi +6147 -0
- numpy/_array_api_info.py +346 -0
- numpy/_array_api_info.pyi +207 -0
- numpy/_configtool.py +39 -0
- numpy/_configtool.pyi +1 -0
- numpy/_core/__init__.py +186 -0
- numpy/_core/__init__.pyi +2 -0
- numpy/_core/_add_newdocs.py +6967 -0
- numpy/_core/_add_newdocs.pyi +3 -0
- numpy/_core/_add_newdocs_scalars.py +390 -0
- numpy/_core/_add_newdocs_scalars.pyi +16 -0
- numpy/_core/_asarray.py +134 -0
- numpy/_core/_asarray.pyi +41 -0
- numpy/_core/_dtype.py +366 -0
- numpy/_core/_dtype.pyi +58 -0
- numpy/_core/_dtype_ctypes.py +120 -0
- numpy/_core/_dtype_ctypes.pyi +83 -0
- numpy/_core/_exceptions.py +162 -0
- numpy/_core/_exceptions.pyi +55 -0
- numpy/_core/_internal.py +958 -0
- numpy/_core/_internal.pyi +72 -0
- numpy/_core/_machar.py +355 -0
- numpy/_core/_machar.pyi +55 -0
- numpy/_core/_methods.py +255 -0
- numpy/_core/_methods.pyi +22 -0
- numpy/_core/_multiarray_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_multiarray_umath.cpython-313-darwin.so +0 -0
- numpy/_core/_operand_flag_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_rational_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_simd.cpython-313-darwin.so +0 -0
- numpy/_core/_simd.pyi +25 -0
- numpy/_core/_string_helpers.py +100 -0
- numpy/_core/_string_helpers.pyi +12 -0
- numpy/_core/_struct_ufunc_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_type_aliases.py +119 -0
- numpy/_core/_type_aliases.pyi +97 -0
- numpy/_core/_ufunc_config.py +491 -0
- numpy/_core/_ufunc_config.pyi +78 -0
- numpy/_core/_umath_tests.cpython-313-darwin.so +0 -0
- numpy/_core/arrayprint.py +1775 -0
- numpy/_core/arrayprint.pyi +238 -0
- numpy/_core/cversions.py +13 -0
- numpy/_core/defchararray.py +1427 -0
- numpy/_core/defchararray.pyi +1135 -0
- numpy/_core/einsumfunc.py +1498 -0
- numpy/_core/einsumfunc.pyi +184 -0
- numpy/_core/fromnumeric.py +4269 -0
- numpy/_core/fromnumeric.pyi +1750 -0
- numpy/_core/function_base.py +545 -0
- numpy/_core/function_base.pyi +278 -0
- numpy/_core/getlimits.py +748 -0
- numpy/_core/getlimits.pyi +3 -0
- numpy/_core/include/numpy/__multiarray_api.c +376 -0
- numpy/_core/include/numpy/__multiarray_api.h +1628 -0
- numpy/_core/include/numpy/__ufunc_api.c +54 -0
- numpy/_core/include/numpy/__ufunc_api.h +341 -0
- numpy/_core/include/numpy/_neighborhood_iterator_imp.h +90 -0
- numpy/_core/include/numpy/_numpyconfig.h +33 -0
- numpy/_core/include/numpy/_public_dtype_api_table.h +86 -0
- numpy/_core/include/numpy/arrayobject.h +7 -0
- numpy/_core/include/numpy/arrayscalars.h +196 -0
- numpy/_core/include/numpy/dtype_api.h +480 -0
- numpy/_core/include/numpy/halffloat.h +70 -0
- numpy/_core/include/numpy/ndarrayobject.h +304 -0
- numpy/_core/include/numpy/ndarraytypes.h +1950 -0
- numpy/_core/include/numpy/npy_2_compat.h +249 -0
- numpy/_core/include/numpy/npy_2_complexcompat.h +28 -0
- numpy/_core/include/numpy/npy_3kcompat.h +374 -0
- numpy/_core/include/numpy/npy_common.h +977 -0
- numpy/_core/include/numpy/npy_cpu.h +124 -0
- numpy/_core/include/numpy/npy_endian.h +78 -0
- numpy/_core/include/numpy/npy_math.h +602 -0
- numpy/_core/include/numpy/npy_no_deprecated_api.h +20 -0
- numpy/_core/include/numpy/npy_os.h +42 -0
- numpy/_core/include/numpy/numpyconfig.h +182 -0
- numpy/_core/include/numpy/random/LICENSE.txt +21 -0
- numpy/_core/include/numpy/random/bitgen.h +20 -0
- numpy/_core/include/numpy/random/distributions.h +209 -0
- numpy/_core/include/numpy/random/libdivide.h +2079 -0
- numpy/_core/include/numpy/ufuncobject.h +343 -0
- numpy/_core/include/numpy/utils.h +37 -0
- numpy/_core/lib/libnpymath.a +0 -0
- numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
- numpy/_core/lib/npy-pkg-config/npymath.ini +20 -0
- numpy/_core/lib/pkgconfig/numpy.pc +7 -0
- numpy/_core/memmap.py +363 -0
- numpy/_core/memmap.pyi +3 -0
- numpy/_core/multiarray.py +1762 -0
- numpy/_core/multiarray.pyi +1285 -0
- numpy/_core/numeric.py +2760 -0
- numpy/_core/numeric.pyi +882 -0
- numpy/_core/numerictypes.py +633 -0
- numpy/_core/numerictypes.pyi +197 -0
- numpy/_core/overrides.py +183 -0
- numpy/_core/overrides.pyi +48 -0
- numpy/_core/printoptions.py +32 -0
- numpy/_core/printoptions.pyi +28 -0
- numpy/_core/records.py +1089 -0
- numpy/_core/records.pyi +333 -0
- numpy/_core/shape_base.py +998 -0
- numpy/_core/shape_base.pyi +175 -0
- numpy/_core/strings.py +1829 -0
- numpy/_core/strings.pyi +511 -0
- numpy/_core/tests/_locales.py +72 -0
- numpy/_core/tests/_natype.py +205 -0
- numpy/_core/tests/data/astype_copy.pkl +0 -0
- numpy/_core/tests/data/generate_umath_validation_data.cpp +170 -0
- numpy/_core/tests/data/recarray_from_file.fits +0 -0
- numpy/_core/tests/data/umath-validation-set-README.txt +15 -0
- numpy/_core/tests/data/umath-validation-set-arccos.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arccosh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arcsin.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arcsinh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arctan.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arctanh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-cbrt.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-cos.csv +1375 -0
- numpy/_core/tests/data/umath-validation-set-cosh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-exp.csv +412 -0
- numpy/_core/tests/data/umath-validation-set-exp2.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-expm1.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-log.csv +271 -0
- numpy/_core/tests/data/umath-validation-set-log10.csv +1629 -0
- numpy/_core/tests/data/umath-validation-set-log1p.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-log2.csv +1629 -0
- numpy/_core/tests/data/umath-validation-set-sin.csv +1370 -0
- numpy/_core/tests/data/umath-validation-set-sinh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-tan.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-tanh.csv +1429 -0
- numpy/_core/tests/examples/cython/checks.pyx +373 -0
- numpy/_core/tests/examples/cython/meson.build +43 -0
- numpy/_core/tests/examples/cython/setup.py +39 -0
- numpy/_core/tests/examples/limited_api/limited_api1.c +17 -0
- numpy/_core/tests/examples/limited_api/limited_api2.pyx +11 -0
- numpy/_core/tests/examples/limited_api/limited_api_latest.c +19 -0
- numpy/_core/tests/examples/limited_api/meson.build +59 -0
- numpy/_core/tests/examples/limited_api/setup.py +24 -0
- numpy/_core/tests/test__exceptions.py +90 -0
- numpy/_core/tests/test_abc.py +54 -0
- numpy/_core/tests/test_api.py +654 -0
- numpy/_core/tests/test_argparse.py +92 -0
- numpy/_core/tests/test_array_api_info.py +113 -0
- numpy/_core/tests/test_array_coercion.py +911 -0
- numpy/_core/tests/test_array_interface.py +222 -0
- numpy/_core/tests/test_arraymethod.py +84 -0
- numpy/_core/tests/test_arrayobject.py +75 -0
- numpy/_core/tests/test_arrayprint.py +1328 -0
- numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
- numpy/_core/tests/test_casting_unittests.py +817 -0
- numpy/_core/tests/test_conversion_utils.py +206 -0
- numpy/_core/tests/test_cpu_dispatcher.py +49 -0
- numpy/_core/tests/test_cpu_features.py +432 -0
- numpy/_core/tests/test_custom_dtypes.py +315 -0
- numpy/_core/tests/test_cython.py +351 -0
- numpy/_core/tests/test_datetime.py +2734 -0
- numpy/_core/tests/test_defchararray.py +825 -0
- numpy/_core/tests/test_deprecations.py +454 -0
- numpy/_core/tests/test_dlpack.py +190 -0
- numpy/_core/tests/test_dtype.py +1995 -0
- numpy/_core/tests/test_einsum.py +1317 -0
- numpy/_core/tests/test_errstate.py +131 -0
- numpy/_core/tests/test_extint128.py +217 -0
- numpy/_core/tests/test_function_base.py +503 -0
- numpy/_core/tests/test_getlimits.py +205 -0
- numpy/_core/tests/test_half.py +568 -0
- numpy/_core/tests/test_hashtable.py +35 -0
- numpy/_core/tests/test_indexerrors.py +125 -0
- numpy/_core/tests/test_indexing.py +1455 -0
- numpy/_core/tests/test_item_selection.py +167 -0
- numpy/_core/tests/test_limited_api.py +102 -0
- numpy/_core/tests/test_longdouble.py +369 -0
- numpy/_core/tests/test_machar.py +30 -0
- numpy/_core/tests/test_mem_overlap.py +930 -0
- numpy/_core/tests/test_mem_policy.py +452 -0
- numpy/_core/tests/test_memmap.py +246 -0
- numpy/_core/tests/test_multiarray.py +10577 -0
- numpy/_core/tests/test_multithreading.py +292 -0
- numpy/_core/tests/test_nditer.py +3498 -0
- numpy/_core/tests/test_nep50_promotions.py +287 -0
- numpy/_core/tests/test_numeric.py +4247 -0
- numpy/_core/tests/test_numerictypes.py +651 -0
- numpy/_core/tests/test_overrides.py +791 -0
- numpy/_core/tests/test_print.py +200 -0
- numpy/_core/tests/test_protocols.py +46 -0
- numpy/_core/tests/test_records.py +544 -0
- numpy/_core/tests/test_regression.py +2670 -0
- numpy/_core/tests/test_scalar_ctors.py +207 -0
- numpy/_core/tests/test_scalar_methods.py +246 -0
- numpy/_core/tests/test_scalarbuffer.py +153 -0
- numpy/_core/tests/test_scalarinherit.py +105 -0
- numpy/_core/tests/test_scalarmath.py +1176 -0
- numpy/_core/tests/test_scalarprint.py +403 -0
- numpy/_core/tests/test_shape_base.py +891 -0
- numpy/_core/tests/test_simd.py +1341 -0
- numpy/_core/tests/test_simd_module.py +103 -0
- numpy/_core/tests/test_stringdtype.py +1814 -0
- numpy/_core/tests/test_strings.py +1499 -0
- numpy/_core/tests/test_ufunc.py +3313 -0
- numpy/_core/tests/test_umath.py +4928 -0
- numpy/_core/tests/test_umath_accuracy.py +124 -0
- numpy/_core/tests/test_umath_complex.py +626 -0
- numpy/_core/tests/test_unicode.py +368 -0
- numpy/_core/umath.py +60 -0
- numpy/_core/umath.pyi +197 -0
- numpy/_distributor_init.py +15 -0
- numpy/_distributor_init.pyi +1 -0
- numpy/_expired_attrs_2_0.py +79 -0
- numpy/_expired_attrs_2_0.pyi +62 -0
- numpy/_globals.py +96 -0
- numpy/_globals.pyi +17 -0
- numpy/_pyinstaller/__init__.py +0 -0
- numpy/_pyinstaller/__init__.pyi +0 -0
- numpy/_pyinstaller/hook-numpy.py +36 -0
- numpy/_pyinstaller/hook-numpy.pyi +13 -0
- numpy/_pyinstaller/tests/__init__.py +16 -0
- numpy/_pyinstaller/tests/pyinstaller-smoke.py +32 -0
- numpy/_pyinstaller/tests/test_pyinstaller.py +35 -0
- numpy/_pytesttester.py +201 -0
- numpy/_pytesttester.pyi +18 -0
- numpy/_typing/__init__.py +148 -0
- numpy/_typing/_add_docstring.py +153 -0
- numpy/_typing/_array_like.py +106 -0
- numpy/_typing/_char_codes.py +213 -0
- numpy/_typing/_dtype_like.py +114 -0
- numpy/_typing/_extended_precision.py +15 -0
- numpy/_typing/_nbit.py +19 -0
- numpy/_typing/_nbit_base.py +94 -0
- numpy/_typing/_nbit_base.pyi +40 -0
- numpy/_typing/_nested_sequence.py +79 -0
- numpy/_typing/_scalars.py +20 -0
- numpy/_typing/_shape.py +8 -0
- numpy/_typing/_ufunc.py +7 -0
- numpy/_typing/_ufunc.pyi +941 -0
- numpy/_utils/__init__.py +95 -0
- numpy/_utils/__init__.pyi +30 -0
- numpy/_utils/_convertions.py +18 -0
- numpy/_utils/_convertions.pyi +4 -0
- numpy/_utils/_inspect.py +192 -0
- numpy/_utils/_inspect.pyi +71 -0
- numpy/_utils/_pep440.py +486 -0
- numpy/_utils/_pep440.pyi +121 -0
- numpy/char/__init__.py +2 -0
- numpy/char/__init__.pyi +111 -0
- numpy/conftest.py +258 -0
- numpy/core/__init__.py +33 -0
- numpy/core/__init__.pyi +0 -0
- numpy/core/_dtype.py +10 -0
- numpy/core/_dtype.pyi +0 -0
- numpy/core/_dtype_ctypes.py +10 -0
- numpy/core/_dtype_ctypes.pyi +0 -0
- numpy/core/_internal.py +27 -0
- numpy/core/_multiarray_umath.py +57 -0
- numpy/core/_utils.py +21 -0
- numpy/core/arrayprint.py +10 -0
- numpy/core/defchararray.py +10 -0
- numpy/core/einsumfunc.py +10 -0
- numpy/core/fromnumeric.py +10 -0
- numpy/core/function_base.py +10 -0
- numpy/core/getlimits.py +10 -0
- numpy/core/multiarray.py +25 -0
- numpy/core/numeric.py +12 -0
- numpy/core/numerictypes.py +10 -0
- numpy/core/overrides.py +10 -0
- numpy/core/overrides.pyi +7 -0
- numpy/core/records.py +10 -0
- numpy/core/shape_base.py +10 -0
- numpy/core/umath.py +10 -0
- numpy/ctypeslib/__init__.py +13 -0
- numpy/ctypeslib/__init__.pyi +33 -0
- numpy/ctypeslib/_ctypeslib.py +603 -0
- numpy/ctypeslib/_ctypeslib.pyi +245 -0
- numpy/doc/ufuncs.py +138 -0
- numpy/dtypes.py +41 -0
- numpy/dtypes.pyi +631 -0
- numpy/exceptions.py +247 -0
- numpy/exceptions.pyi +27 -0
- numpy/f2py/__init__.py +86 -0
- numpy/f2py/__init__.pyi +6 -0
- numpy/f2py/__main__.py +5 -0
- numpy/f2py/__version__.py +1 -0
- numpy/f2py/__version__.pyi +1 -0
- numpy/f2py/_backends/__init__.py +9 -0
- numpy/f2py/_backends/__init__.pyi +5 -0
- numpy/f2py/_backends/_backend.py +44 -0
- numpy/f2py/_backends/_backend.pyi +46 -0
- numpy/f2py/_backends/_distutils.py +76 -0
- numpy/f2py/_backends/_distutils.pyi +13 -0
- numpy/f2py/_backends/_meson.py +231 -0
- numpy/f2py/_backends/_meson.pyi +63 -0
- numpy/f2py/_backends/meson.build.template +55 -0
- numpy/f2py/_isocbind.py +62 -0
- numpy/f2py/_isocbind.pyi +13 -0
- numpy/f2py/_src_pyf.py +247 -0
- numpy/f2py/_src_pyf.pyi +29 -0
- numpy/f2py/auxfuncs.py +1004 -0
- numpy/f2py/auxfuncs.pyi +264 -0
- numpy/f2py/capi_maps.py +811 -0
- numpy/f2py/capi_maps.pyi +33 -0
- numpy/f2py/cb_rules.py +665 -0
- numpy/f2py/cb_rules.pyi +17 -0
- numpy/f2py/cfuncs.py +1563 -0
- numpy/f2py/cfuncs.pyi +31 -0
- numpy/f2py/common_rules.py +143 -0
- numpy/f2py/common_rules.pyi +9 -0
- numpy/f2py/crackfortran.py +3725 -0
- numpy/f2py/crackfortran.pyi +258 -0
- numpy/f2py/diagnose.py +149 -0
- numpy/f2py/diagnose.pyi +1 -0
- numpy/f2py/f2py2e.py +786 -0
- numpy/f2py/f2py2e.pyi +76 -0
- numpy/f2py/f90mod_rules.py +269 -0
- numpy/f2py/f90mod_rules.pyi +16 -0
- numpy/f2py/func2subr.py +329 -0
- numpy/f2py/func2subr.pyi +7 -0
- numpy/f2py/rules.py +1629 -0
- numpy/f2py/rules.pyi +43 -0
- numpy/f2py/setup.cfg +3 -0
- numpy/f2py/src/fortranobject.c +1436 -0
- numpy/f2py/src/fortranobject.h +173 -0
- numpy/f2py/symbolic.py +1516 -0
- numpy/f2py/symbolic.pyi +221 -0
- numpy/f2py/tests/__init__.py +16 -0
- numpy/f2py/tests/src/abstract_interface/foo.f90 +34 -0
- numpy/f2py/tests/src/abstract_interface/gh18403_mod.f90 +6 -0
- numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +235 -0
- numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +1 -0
- numpy/f2py/tests/src/assumed_shape/foo_free.f90 +34 -0
- numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +41 -0
- numpy/f2py/tests/src/assumed_shape/foo_use.f90 +19 -0
- numpy/f2py/tests/src/assumed_shape/precision.f90 +4 -0
- numpy/f2py/tests/src/block_docstring/foo.f +6 -0
- numpy/f2py/tests/src/callback/foo.f +62 -0
- numpy/f2py/tests/src/callback/gh17797.f90 +7 -0
- numpy/f2py/tests/src/callback/gh18335.f90 +17 -0
- numpy/f2py/tests/src/callback/gh25211.f +10 -0
- numpy/f2py/tests/src/callback/gh25211.pyf +18 -0
- numpy/f2py/tests/src/callback/gh26681.f90 +18 -0
- numpy/f2py/tests/src/cli/gh_22819.pyf +6 -0
- numpy/f2py/tests/src/cli/hi77.f +3 -0
- numpy/f2py/tests/src/cli/hiworld.f90 +3 -0
- numpy/f2py/tests/src/common/block.f +11 -0
- numpy/f2py/tests/src/common/gh19161.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/accesstype.f90 +13 -0
- numpy/f2py/tests/src/crackfortran/common_with_division.f +17 -0
- numpy/f2py/tests/src/crackfortran/data_common.f +8 -0
- numpy/f2py/tests/src/crackfortran/data_multiplier.f +5 -0
- numpy/f2py/tests/src/crackfortran/data_stmts.f90 +20 -0
- numpy/f2py/tests/src/crackfortran/data_with_comments.f +8 -0
- numpy/f2py/tests/src/crackfortran/foo_deps.f90 +6 -0
- numpy/f2py/tests/src/crackfortran/gh15035.f +16 -0
- numpy/f2py/tests/src/crackfortran/gh17859.f +12 -0
- numpy/f2py/tests/src/crackfortran/gh22648.pyf +7 -0
- numpy/f2py/tests/src/crackfortran/gh23533.f +5 -0
- numpy/f2py/tests/src/crackfortran/gh23598.f90 +4 -0
- numpy/f2py/tests/src/crackfortran/gh23598Warn.f90 +11 -0
- numpy/f2py/tests/src/crackfortran/gh23879.f90 +20 -0
- numpy/f2py/tests/src/crackfortran/gh27697.f90 +12 -0
- numpy/f2py/tests/src/crackfortran/gh2848.f90 +13 -0
- numpy/f2py/tests/src/crackfortran/operators.f90 +49 -0
- numpy/f2py/tests/src/crackfortran/privatemod.f90 +11 -0
- numpy/f2py/tests/src/crackfortran/publicmod.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/pubprivmod.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/unicode_comment.f90 +4 -0
- numpy/f2py/tests/src/f2cmap/.f2py_f2cmap +1 -0
- numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90 +9 -0
- numpy/f2py/tests/src/isocintrin/isoCtests.f90 +34 -0
- numpy/f2py/tests/src/kind/foo.f90 +20 -0
- numpy/f2py/tests/src/mixed/foo.f +5 -0
- numpy/f2py/tests/src/mixed/foo_fixed.f90 +8 -0
- numpy/f2py/tests/src/mixed/foo_free.f90 +8 -0
- numpy/f2py/tests/src/modules/gh25337/data.f90 +8 -0
- numpy/f2py/tests/src/modules/gh25337/use_data.f90 +6 -0
- numpy/f2py/tests/src/modules/gh26920/two_mods_with_no_public_entities.f90 +21 -0
- numpy/f2py/tests/src/modules/gh26920/two_mods_with_one_public_routine.f90 +21 -0
- numpy/f2py/tests/src/modules/module_data_docstring.f90 +12 -0
- numpy/f2py/tests/src/modules/use_modules.f90 +20 -0
- numpy/f2py/tests/src/negative_bounds/issue_20853.f90 +7 -0
- numpy/f2py/tests/src/parameter/constant_array.f90 +45 -0
- numpy/f2py/tests/src/parameter/constant_both.f90 +57 -0
- numpy/f2py/tests/src/parameter/constant_compound.f90 +15 -0
- numpy/f2py/tests/src/parameter/constant_integer.f90 +22 -0
- numpy/f2py/tests/src/parameter/constant_non_compound.f90 +23 -0
- numpy/f2py/tests/src/parameter/constant_real.f90 +23 -0
- numpy/f2py/tests/src/quoted_character/foo.f +14 -0
- numpy/f2py/tests/src/regression/AB.inc +1 -0
- numpy/f2py/tests/src/regression/assignOnlyModule.f90 +25 -0
- numpy/f2py/tests/src/regression/datonly.f90 +17 -0
- numpy/f2py/tests/src/regression/f77comments.f +26 -0
- numpy/f2py/tests/src/regression/f77fixedform.f95 +5 -0
- numpy/f2py/tests/src/regression/f90continuation.f90 +9 -0
- numpy/f2py/tests/src/regression/incfile.f90 +5 -0
- numpy/f2py/tests/src/regression/inout.f90 +9 -0
- numpy/f2py/tests/src/regression/lower_f2py_fortran.f90 +5 -0
- numpy/f2py/tests/src/regression/mod_derived_types.f90 +23 -0
- numpy/f2py/tests/src/return_character/foo77.f +45 -0
- numpy/f2py/tests/src/return_character/foo90.f90 +48 -0
- numpy/f2py/tests/src/return_complex/foo77.f +45 -0
- numpy/f2py/tests/src/return_complex/foo90.f90 +48 -0
- numpy/f2py/tests/src/return_integer/foo77.f +56 -0
- numpy/f2py/tests/src/return_integer/foo90.f90 +59 -0
- numpy/f2py/tests/src/return_logical/foo77.f +56 -0
- numpy/f2py/tests/src/return_logical/foo90.f90 +59 -0
- numpy/f2py/tests/src/return_real/foo77.f +45 -0
- numpy/f2py/tests/src/return_real/foo90.f90 +48 -0
- numpy/f2py/tests/src/routines/funcfortranname.f +5 -0
- numpy/f2py/tests/src/routines/funcfortranname.pyf +11 -0
- numpy/f2py/tests/src/routines/subrout.f +4 -0
- numpy/f2py/tests/src/routines/subrout.pyf +10 -0
- numpy/f2py/tests/src/size/foo.f90 +44 -0
- numpy/f2py/tests/src/string/char.f90 +29 -0
- numpy/f2py/tests/src/string/fixed_string.f90 +34 -0
- numpy/f2py/tests/src/string/gh24008.f +8 -0
- numpy/f2py/tests/src/string/gh24662.f90 +7 -0
- numpy/f2py/tests/src/string/gh25286.f90 +14 -0
- numpy/f2py/tests/src/string/gh25286.pyf +12 -0
- numpy/f2py/tests/src/string/gh25286_bc.pyf +12 -0
- numpy/f2py/tests/src/string/scalar_string.f90 +9 -0
- numpy/f2py/tests/src/string/string.f +12 -0
- numpy/f2py/tests/src/value_attrspec/gh21665.f90 +9 -0
- numpy/f2py/tests/test_abstract_interface.py +26 -0
- numpy/f2py/tests/test_array_from_pyobj.py +678 -0
- numpy/f2py/tests/test_assumed_shape.py +50 -0
- numpy/f2py/tests/test_block_docstring.py +20 -0
- numpy/f2py/tests/test_callback.py +263 -0
- numpy/f2py/tests/test_character.py +641 -0
- numpy/f2py/tests/test_common.py +23 -0
- numpy/f2py/tests/test_crackfortran.py +421 -0
- numpy/f2py/tests/test_data.py +71 -0
- numpy/f2py/tests/test_docs.py +64 -0
- numpy/f2py/tests/test_f2cmap.py +17 -0
- numpy/f2py/tests/test_f2py2e.py +964 -0
- numpy/f2py/tests/test_isoc.py +56 -0
- numpy/f2py/tests/test_kind.py +53 -0
- numpy/f2py/tests/test_mixed.py +35 -0
- numpy/f2py/tests/test_modules.py +83 -0
- numpy/f2py/tests/test_parameter.py +129 -0
- numpy/f2py/tests/test_pyf_src.py +43 -0
- numpy/f2py/tests/test_quoted_character.py +18 -0
- numpy/f2py/tests/test_regression.py +187 -0
- numpy/f2py/tests/test_return_character.py +48 -0
- numpy/f2py/tests/test_return_complex.py +67 -0
- numpy/f2py/tests/test_return_integer.py +55 -0
- numpy/f2py/tests/test_return_logical.py +65 -0
- numpy/f2py/tests/test_return_real.py +109 -0
- numpy/f2py/tests/test_routines.py +29 -0
- numpy/f2py/tests/test_semicolon_split.py +75 -0
- numpy/f2py/tests/test_size.py +45 -0
- numpy/f2py/tests/test_string.py +100 -0
- numpy/f2py/tests/test_symbolic.py +495 -0
- numpy/f2py/tests/test_value_attrspec.py +15 -0
- numpy/f2py/tests/util.py +442 -0
- numpy/f2py/use_rules.py +99 -0
- numpy/f2py/use_rules.pyi +9 -0
- numpy/fft/__init__.py +215 -0
- numpy/fft/__init__.pyi +43 -0
- numpy/fft/_helper.py +235 -0
- numpy/fft/_helper.pyi +45 -0
- numpy/fft/_pocketfft.py +1693 -0
- numpy/fft/_pocketfft.pyi +138 -0
- numpy/fft/_pocketfft_umath.cpython-313-darwin.so +0 -0
- numpy/fft/helper.py +17 -0
- numpy/fft/helper.pyi +22 -0
- numpy/fft/tests/__init__.py +0 -0
- numpy/fft/tests/test_helper.py +167 -0
- numpy/fft/tests/test_pocketfft.py +589 -0
- numpy/lib/__init__.py +97 -0
- numpy/lib/__init__.pyi +44 -0
- numpy/lib/_array_utils_impl.py +62 -0
- numpy/lib/_array_utils_impl.pyi +26 -0
- numpy/lib/_arraypad_impl.py +890 -0
- numpy/lib/_arraypad_impl.pyi +89 -0
- numpy/lib/_arraysetops_impl.py +1260 -0
- numpy/lib/_arraysetops_impl.pyi +468 -0
- numpy/lib/_arrayterator_impl.py +224 -0
- numpy/lib/_arrayterator_impl.pyi +46 -0
- numpy/lib/_datasource.py +700 -0
- numpy/lib/_datasource.pyi +31 -0
- numpy/lib/_format_impl.py +1036 -0
- numpy/lib/_format_impl.pyi +26 -0
- numpy/lib/_function_base_impl.py +5844 -0
- numpy/lib/_function_base_impl.pyi +1164 -0
- numpy/lib/_histograms_impl.py +1085 -0
- numpy/lib/_histograms_impl.pyi +50 -0
- numpy/lib/_index_tricks_impl.py +1067 -0
- numpy/lib/_index_tricks_impl.pyi +208 -0
- numpy/lib/_iotools.py +900 -0
- numpy/lib/_iotools.pyi +114 -0
- numpy/lib/_nanfunctions_impl.py +2024 -0
- numpy/lib/_nanfunctions_impl.pyi +52 -0
- numpy/lib/_npyio_impl.py +2596 -0
- numpy/lib/_npyio_impl.pyi +301 -0
- numpy/lib/_polynomial_impl.py +1465 -0
- numpy/lib/_polynomial_impl.pyi +318 -0
- numpy/lib/_scimath_impl.py +642 -0
- numpy/lib/_scimath_impl.pyi +93 -0
- numpy/lib/_shape_base_impl.py +1301 -0
- numpy/lib/_shape_base_impl.pyi +235 -0
- numpy/lib/_stride_tricks_impl.py +549 -0
- numpy/lib/_stride_tricks_impl.pyi +74 -0
- numpy/lib/_twodim_base_impl.py +1201 -0
- numpy/lib/_twodim_base_impl.pyi +438 -0
- numpy/lib/_type_check_impl.py +699 -0
- numpy/lib/_type_check_impl.pyi +350 -0
- numpy/lib/_ufunclike_impl.py +207 -0
- numpy/lib/_ufunclike_impl.pyi +67 -0
- numpy/lib/_user_array_impl.py +299 -0
- numpy/lib/_user_array_impl.pyi +225 -0
- numpy/lib/_utils_impl.py +784 -0
- numpy/lib/_utils_impl.pyi +10 -0
- numpy/lib/_version.py +154 -0
- numpy/lib/_version.pyi +17 -0
- numpy/lib/array_utils.py +7 -0
- numpy/lib/array_utils.pyi +12 -0
- numpy/lib/format.py +24 -0
- numpy/lib/format.pyi +66 -0
- numpy/lib/introspect.py +95 -0
- numpy/lib/introspect.pyi +3 -0
- numpy/lib/mixins.py +180 -0
- numpy/lib/mixins.pyi +77 -0
- numpy/lib/npyio.py +1 -0
- numpy/lib/npyio.pyi +9 -0
- numpy/lib/recfunctions.py +1681 -0
- numpy/lib/recfunctions.pyi +435 -0
- numpy/lib/scimath.py +13 -0
- numpy/lib/scimath.pyi +30 -0
- numpy/lib/stride_tricks.py +1 -0
- numpy/lib/stride_tricks.pyi +6 -0
- numpy/lib/tests/__init__.py +0 -0
- numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npz +0 -0
- numpy/lib/tests/data/py3-objarr.npy +0 -0
- numpy/lib/tests/data/py3-objarr.npz +0 -0
- numpy/lib/tests/data/python3.npy +0 -0
- numpy/lib/tests/data/win64python2.npy +0 -0
- numpy/lib/tests/test__datasource.py +352 -0
- numpy/lib/tests/test__iotools.py +360 -0
- numpy/lib/tests/test__version.py +64 -0
- numpy/lib/tests/test_array_utils.py +32 -0
- numpy/lib/tests/test_arraypad.py +1415 -0
- numpy/lib/tests/test_arraysetops.py +1074 -0
- numpy/lib/tests/test_arrayterator.py +46 -0
- numpy/lib/tests/test_format.py +1054 -0
- numpy/lib/tests/test_function_base.py +4573 -0
- numpy/lib/tests/test_histograms.py +855 -0
- numpy/lib/tests/test_index_tricks.py +573 -0
- numpy/lib/tests/test_io.py +2848 -0
- numpy/lib/tests/test_loadtxt.py +1101 -0
- numpy/lib/tests/test_mixins.py +215 -0
- numpy/lib/tests/test_nanfunctions.py +1438 -0
- numpy/lib/tests/test_packbits.py +376 -0
- numpy/lib/tests/test_polynomial.py +320 -0
- numpy/lib/tests/test_recfunctions.py +1052 -0
- numpy/lib/tests/test_regression.py +231 -0
- numpy/lib/tests/test_shape_base.py +813 -0
- numpy/lib/tests/test_stride_tricks.py +656 -0
- numpy/lib/tests/test_twodim_base.py +559 -0
- numpy/lib/tests/test_type_check.py +473 -0
- numpy/lib/tests/test_ufunclike.py +97 -0
- numpy/lib/tests/test_utils.py +80 -0
- numpy/lib/user_array.py +1 -0
- numpy/lib/user_array.pyi +1 -0
- numpy/linalg/__init__.py +98 -0
- numpy/linalg/__init__.pyi +73 -0
- numpy/linalg/_linalg.py +3682 -0
- numpy/linalg/_linalg.pyi +475 -0
- numpy/linalg/_umath_linalg.cpython-313-darwin.so +0 -0
- numpy/linalg/_umath_linalg.pyi +61 -0
- numpy/linalg/lapack_lite.cpython-313-darwin.so +0 -0
- numpy/linalg/lapack_lite.pyi +141 -0
- numpy/linalg/linalg.py +17 -0
- numpy/linalg/linalg.pyi +69 -0
- numpy/linalg/tests/__init__.py +0 -0
- numpy/linalg/tests/test_deprecations.py +20 -0
- numpy/linalg/tests/test_linalg.py +2443 -0
- numpy/linalg/tests/test_regression.py +181 -0
- numpy/ma/API_CHANGES.txt +135 -0
- numpy/ma/LICENSE +24 -0
- numpy/ma/README.rst +236 -0
- numpy/ma/__init__.py +53 -0
- numpy/ma/__init__.pyi +458 -0
- numpy/ma/core.py +8933 -0
- numpy/ma/core.pyi +1462 -0
- numpy/ma/extras.py +2344 -0
- numpy/ma/extras.pyi +138 -0
- numpy/ma/mrecords.py +773 -0
- numpy/ma/mrecords.pyi +96 -0
- numpy/ma/tests/__init__.py +0 -0
- numpy/ma/tests/test_arrayobject.py +40 -0
- numpy/ma/tests/test_core.py +5886 -0
- numpy/ma/tests/test_deprecations.py +87 -0
- numpy/ma/tests/test_extras.py +1998 -0
- numpy/ma/tests/test_mrecords.py +497 -0
- numpy/ma/tests/test_old_ma.py +942 -0
- numpy/ma/tests/test_regression.py +100 -0
- numpy/ma/tests/test_subclassing.py +469 -0
- numpy/ma/testutils.py +294 -0
- numpy/matlib.py +380 -0
- numpy/matlib.pyi +582 -0
- numpy/matrixlib/__init__.py +12 -0
- numpy/matrixlib/__init__.pyi +5 -0
- numpy/matrixlib/defmatrix.py +1119 -0
- numpy/matrixlib/defmatrix.pyi +17 -0
- numpy/matrixlib/tests/__init__.py +0 -0
- numpy/matrixlib/tests/test_defmatrix.py +455 -0
- numpy/matrixlib/tests/test_interaction.py +360 -0
- numpy/matrixlib/tests/test_masked_matrix.py +240 -0
- numpy/matrixlib/tests/test_matrix_linalg.py +105 -0
- numpy/matrixlib/tests/test_multiarray.py +17 -0
- numpy/matrixlib/tests/test_numeric.py +18 -0
- numpy/matrixlib/tests/test_regression.py +31 -0
- numpy/polynomial/__init__.py +187 -0
- numpy/polynomial/__init__.pyi +25 -0
- numpy/polynomial/_polybase.py +1191 -0
- numpy/polynomial/_polybase.pyi +285 -0
- numpy/polynomial/_polytypes.pyi +892 -0
- numpy/polynomial/chebyshev.py +2003 -0
- numpy/polynomial/chebyshev.pyi +181 -0
- numpy/polynomial/hermite.py +1740 -0
- numpy/polynomial/hermite.pyi +107 -0
- numpy/polynomial/hermite_e.py +1642 -0
- numpy/polynomial/hermite_e.pyi +107 -0
- numpy/polynomial/laguerre.py +1675 -0
- numpy/polynomial/laguerre.pyi +100 -0
- numpy/polynomial/legendre.py +1605 -0
- numpy/polynomial/legendre.pyi +100 -0
- numpy/polynomial/polynomial.py +1616 -0
- numpy/polynomial/polynomial.pyi +89 -0
- numpy/polynomial/polyutils.py +759 -0
- numpy/polynomial/polyutils.pyi +423 -0
- numpy/polynomial/tests/__init__.py +0 -0
- numpy/polynomial/tests/test_chebyshev.py +623 -0
- numpy/polynomial/tests/test_classes.py +618 -0
- numpy/polynomial/tests/test_hermite.py +558 -0
- numpy/polynomial/tests/test_hermite_e.py +559 -0
- numpy/polynomial/tests/test_laguerre.py +540 -0
- numpy/polynomial/tests/test_legendre.py +571 -0
- numpy/polynomial/tests/test_polynomial.py +669 -0
- numpy/polynomial/tests/test_polyutils.py +128 -0
- numpy/polynomial/tests/test_printing.py +555 -0
- numpy/polynomial/tests/test_symbol.py +217 -0
- numpy/py.typed +0 -0
- numpy/random/LICENSE.md +71 -0
- numpy/random/__init__.pxd +14 -0
- numpy/random/__init__.py +213 -0
- numpy/random/__init__.pyi +124 -0
- numpy/random/_bounded_integers.cpython-313-darwin.so +0 -0
- numpy/random/_bounded_integers.pxd +29 -0
- numpy/random/_bounded_integers.pyi +1 -0
- numpy/random/_common.cpython-313-darwin.so +0 -0
- numpy/random/_common.pxd +107 -0
- numpy/random/_common.pyi +16 -0
- numpy/random/_examples/cffi/extending.py +44 -0
- numpy/random/_examples/cffi/parse.py +53 -0
- numpy/random/_examples/cython/extending.pyx +77 -0
- numpy/random/_examples/cython/extending_distributions.pyx +118 -0
- numpy/random/_examples/cython/meson.build +53 -0
- numpy/random/_examples/numba/extending.py +86 -0
- numpy/random/_examples/numba/extending_distributions.py +67 -0
- numpy/random/_generator.cpython-313-darwin.so +0 -0
- numpy/random/_generator.pyi +861 -0
- numpy/random/_mt19937.cpython-313-darwin.so +0 -0
- numpy/random/_mt19937.pyi +25 -0
- numpy/random/_pcg64.cpython-313-darwin.so +0 -0
- numpy/random/_pcg64.pyi +44 -0
- numpy/random/_philox.cpython-313-darwin.so +0 -0
- numpy/random/_philox.pyi +39 -0
- numpy/random/_pickle.py +88 -0
- numpy/random/_pickle.pyi +43 -0
- numpy/random/_sfc64.cpython-313-darwin.so +0 -0
- numpy/random/_sfc64.pyi +28 -0
- numpy/random/bit_generator.cpython-313-darwin.so +0 -0
- numpy/random/bit_generator.pxd +35 -0
- numpy/random/bit_generator.pyi +124 -0
- numpy/random/c_distributions.pxd +119 -0
- numpy/random/lib/libnpyrandom.a +0 -0
- numpy/random/mtrand.cpython-313-darwin.so +0 -0
- numpy/random/mtrand.pyi +703 -0
- numpy/random/tests/__init__.py +0 -0
- numpy/random/tests/data/__init__.py +0 -0
- numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
- numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
- numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
- numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
- numpy/random/tests/data/philox-testset-1.csv +1001 -0
- numpy/random/tests/data/philox-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
- numpy/random/tests/test_direct.py +592 -0
- numpy/random/tests/test_extending.py +127 -0
- numpy/random/tests/test_generator_mt19937.py +2809 -0
- numpy/random/tests/test_generator_mt19937_regressions.py +207 -0
- numpy/random/tests/test_random.py +1757 -0
- numpy/random/tests/test_randomstate.py +2130 -0
- numpy/random/tests/test_randomstate_regression.py +217 -0
- numpy/random/tests/test_regression.py +152 -0
- numpy/random/tests/test_seed_sequence.py +79 -0
- numpy/random/tests/test_smoke.py +819 -0
- numpy/rec/__init__.py +2 -0
- numpy/rec/__init__.pyi +23 -0
- numpy/strings/__init__.py +2 -0
- numpy/strings/__init__.pyi +97 -0
- numpy/testing/__init__.py +22 -0
- numpy/testing/__init__.pyi +102 -0
- numpy/testing/_private/__init__.py +0 -0
- numpy/testing/_private/__init__.pyi +0 -0
- numpy/testing/_private/extbuild.py +250 -0
- numpy/testing/_private/extbuild.pyi +25 -0
- numpy/testing/_private/utils.py +2752 -0
- numpy/testing/_private/utils.pyi +499 -0
- numpy/testing/overrides.py +84 -0
- numpy/testing/overrides.pyi +11 -0
- numpy/testing/print_coercion_tables.py +207 -0
- numpy/testing/print_coercion_tables.pyi +27 -0
- numpy/testing/tests/__init__.py +0 -0
- numpy/testing/tests/test_utils.py +1917 -0
- numpy/tests/__init__.py +0 -0
- numpy/tests/test__all__.py +10 -0
- numpy/tests/test_configtool.py +48 -0
- numpy/tests/test_ctypeslib.py +377 -0
- numpy/tests/test_lazyloading.py +38 -0
- numpy/tests/test_matlib.py +59 -0
- numpy/tests/test_numpy_config.py +46 -0
- numpy/tests/test_numpy_version.py +54 -0
- numpy/tests/test_public_api.py +806 -0
- numpy/tests/test_reloading.py +74 -0
- numpy/tests/test_scripts.py +49 -0
- numpy/tests/test_warnings.py +78 -0
- numpy/typing/__init__.py +201 -0
- numpy/typing/mypy_plugin.py +195 -0
- numpy/typing/tests/__init__.py +0 -0
- numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
- numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
- numpy/typing/tests/data/fail/array_like.pyi +15 -0
- numpy/typing/tests/data/fail/array_pad.pyi +6 -0
- numpy/typing/tests/data/fail/arrayprint.pyi +16 -0
- numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
- numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
- numpy/typing/tests/data/fail/char.pyi +65 -0
- numpy/typing/tests/data/fail/chararray.pyi +62 -0
- numpy/typing/tests/data/fail/comparisons.pyi +27 -0
- numpy/typing/tests/data/fail/constants.pyi +3 -0
- numpy/typing/tests/data/fail/datasource.pyi +15 -0
- numpy/typing/tests/data/fail/dtype.pyi +17 -0
- numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
- numpy/typing/tests/data/fail/flatiter.pyi +20 -0
- numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
- numpy/typing/tests/data/fail/histograms.pyi +12 -0
- numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
- numpy/typing/tests/data/fail/lib_function_base.pyi +62 -0
- numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
- numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
- numpy/typing/tests/data/fail/lib_version.pyi +6 -0
- numpy/typing/tests/data/fail/linalg.pyi +48 -0
- numpy/typing/tests/data/fail/ma.pyi +143 -0
- numpy/typing/tests/data/fail/memmap.pyi +5 -0
- numpy/typing/tests/data/fail/modules.pyi +17 -0
- numpy/typing/tests/data/fail/multiarray.pyi +52 -0
- numpy/typing/tests/data/fail/ndarray.pyi +11 -0
- numpy/typing/tests/data/fail/ndarray_misc.pyi +36 -0
- numpy/typing/tests/data/fail/nditer.pyi +8 -0
- numpy/typing/tests/data/fail/nested_sequence.pyi +16 -0
- numpy/typing/tests/data/fail/npyio.pyi +24 -0
- numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
- numpy/typing/tests/data/fail/random.pyi +62 -0
- numpy/typing/tests/data/fail/rec.pyi +17 -0
- numpy/typing/tests/data/fail/scalars.pyi +87 -0
- numpy/typing/tests/data/fail/shape.pyi +6 -0
- numpy/typing/tests/data/fail/shape_base.pyi +8 -0
- numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
- numpy/typing/tests/data/fail/strings.pyi +52 -0
- numpy/typing/tests/data/fail/testing.pyi +28 -0
- numpy/typing/tests/data/fail/twodim_base.pyi +32 -0
- numpy/typing/tests/data/fail/type_check.pyi +13 -0
- numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
- numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
- numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
- numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
- numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
- numpy/typing/tests/data/mypy.ini +9 -0
- numpy/typing/tests/data/pass/arithmetic.py +612 -0
- numpy/typing/tests/data/pass/array_constructors.py +137 -0
- numpy/typing/tests/data/pass/array_like.py +43 -0
- numpy/typing/tests/data/pass/arrayprint.py +37 -0
- numpy/typing/tests/data/pass/arrayterator.py +27 -0
- numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
- numpy/typing/tests/data/pass/comparisons.py +315 -0
- numpy/typing/tests/data/pass/dtype.py +57 -0
- numpy/typing/tests/data/pass/einsumfunc.py +36 -0
- numpy/typing/tests/data/pass/flatiter.py +19 -0
- numpy/typing/tests/data/pass/fromnumeric.py +272 -0
- numpy/typing/tests/data/pass/index_tricks.py +60 -0
- numpy/typing/tests/data/pass/lib_user_array.py +22 -0
- numpy/typing/tests/data/pass/lib_utils.py +19 -0
- numpy/typing/tests/data/pass/lib_version.py +18 -0
- numpy/typing/tests/data/pass/literal.py +51 -0
- numpy/typing/tests/data/pass/ma.py +174 -0
- numpy/typing/tests/data/pass/mod.py +149 -0
- numpy/typing/tests/data/pass/modules.py +45 -0
- numpy/typing/tests/data/pass/multiarray.py +76 -0
- numpy/typing/tests/data/pass/ndarray_conversion.py +87 -0
- numpy/typing/tests/data/pass/ndarray_misc.py +203 -0
- numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
- numpy/typing/tests/data/pass/nditer.py +4 -0
- numpy/typing/tests/data/pass/numeric.py +95 -0
- numpy/typing/tests/data/pass/numerictypes.py +17 -0
- numpy/typing/tests/data/pass/random.py +1497 -0
- numpy/typing/tests/data/pass/recfunctions.py +161 -0
- numpy/typing/tests/data/pass/scalars.py +248 -0
- numpy/typing/tests/data/pass/shape.py +19 -0
- numpy/typing/tests/data/pass/simple.py +168 -0
- numpy/typing/tests/data/pass/simple_py3.py +6 -0
- numpy/typing/tests/data/pass/ufunc_config.py +64 -0
- numpy/typing/tests/data/pass/ufunclike.py +47 -0
- numpy/typing/tests/data/pass/ufuncs.py +16 -0
- numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
- numpy/typing/tests/data/reveal/arithmetic.pyi +720 -0
- numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
- numpy/typing/tests/data/reveal/array_constructors.pyi +249 -0
- numpy/typing/tests/data/reveal/arraypad.pyi +22 -0
- numpy/typing/tests/data/reveal/arrayprint.pyi +25 -0
- numpy/typing/tests/data/reveal/arraysetops.pyi +74 -0
- numpy/typing/tests/data/reveal/arrayterator.pyi +27 -0
- numpy/typing/tests/data/reveal/bitwise_ops.pyi +167 -0
- numpy/typing/tests/data/reveal/char.pyi +224 -0
- numpy/typing/tests/data/reveal/chararray.pyi +137 -0
- numpy/typing/tests/data/reveal/comparisons.pyi +264 -0
- numpy/typing/tests/data/reveal/constants.pyi +14 -0
- numpy/typing/tests/data/reveal/ctypeslib.pyi +81 -0
- numpy/typing/tests/data/reveal/datasource.pyi +23 -0
- numpy/typing/tests/data/reveal/dtype.pyi +136 -0
- numpy/typing/tests/data/reveal/einsumfunc.pyi +39 -0
- numpy/typing/tests/data/reveal/emath.pyi +54 -0
- numpy/typing/tests/data/reveal/fft.pyi +37 -0
- numpy/typing/tests/data/reveal/flatiter.pyi +47 -0
- numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
- numpy/typing/tests/data/reveal/getlimits.pyi +51 -0
- numpy/typing/tests/data/reveal/histograms.pyi +25 -0
- numpy/typing/tests/data/reveal/index_tricks.pyi +70 -0
- numpy/typing/tests/data/reveal/lib_function_base.pyi +213 -0
- numpy/typing/tests/data/reveal/lib_polynomial.pyi +144 -0
- numpy/typing/tests/data/reveal/lib_utils.pyi +17 -0
- numpy/typing/tests/data/reveal/lib_version.pyi +20 -0
- numpy/typing/tests/data/reveal/linalg.pyi +132 -0
- numpy/typing/tests/data/reveal/ma.pyi +369 -0
- numpy/typing/tests/data/reveal/matrix.pyi +73 -0
- numpy/typing/tests/data/reveal/memmap.pyi +19 -0
- numpy/typing/tests/data/reveal/mod.pyi +179 -0
- numpy/typing/tests/data/reveal/modules.pyi +51 -0
- numpy/typing/tests/data/reveal/multiarray.pyi +194 -0
- numpy/typing/tests/data/reveal/nbit_base_example.pyi +21 -0
- numpy/typing/tests/data/reveal/ndarray_assignability.pyi +77 -0
- numpy/typing/tests/data/reveal/ndarray_conversion.pyi +85 -0
- numpy/typing/tests/data/reveal/ndarray_misc.pyi +247 -0
- numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +39 -0
- numpy/typing/tests/data/reveal/nditer.pyi +49 -0
- numpy/typing/tests/data/reveal/nested_sequence.pyi +25 -0
- numpy/typing/tests/data/reveal/npyio.pyi +83 -0
- numpy/typing/tests/data/reveal/numeric.pyi +134 -0
- numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
- numpy/typing/tests/data/reveal/polynomial_polybase.pyi +220 -0
- numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +219 -0
- numpy/typing/tests/data/reveal/polynomial_series.pyi +138 -0
- numpy/typing/tests/data/reveal/random.pyi +1546 -0
- numpy/typing/tests/data/reveal/rec.pyi +171 -0
- numpy/typing/tests/data/reveal/scalars.pyi +191 -0
- numpy/typing/tests/data/reveal/shape.pyi +13 -0
- numpy/typing/tests/data/reveal/shape_base.pyi +52 -0
- numpy/typing/tests/data/reveal/stride_tricks.pyi +27 -0
- numpy/typing/tests/data/reveal/strings.pyi +196 -0
- numpy/typing/tests/data/reveal/testing.pyi +198 -0
- numpy/typing/tests/data/reveal/twodim_base.pyi +145 -0
- numpy/typing/tests/data/reveal/type_check.pyi +67 -0
- numpy/typing/tests/data/reveal/ufunc_config.pyi +30 -0
- numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
- numpy/typing/tests/data/reveal/ufuncs.pyi +123 -0
- numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
- numpy/typing/tests/test_isfile.py +32 -0
- numpy/typing/tests/test_runtime.py +102 -0
- numpy/typing/tests/test_typing.py +205 -0
- numpy/version.py +11 -0
- numpy/version.pyi +18 -0
- numpy-2.3.5.dist-info/LICENSE.txt +971 -0
- numpy-2.3.5.dist-info/METADATA +1093 -0
- numpy-2.3.5.dist-info/RECORD +897 -0
- numpy-2.3.5.dist-info/WHEEL +6 -0
- numpy-2.3.5.dist-info/entry_points.txt +13 -0
|
@@ -0,0 +1,1762 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Create the numpy._core.multiarray namespace for backward compatibility.
|
|
3
|
+
In v1.16 the multiarray and umath c-extension modules were merged into
|
|
4
|
+
a single _multiarray_umath extension module. So we replicate the old
|
|
5
|
+
namespace by importing from the extension module.
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import functools
|
|
10
|
+
|
|
11
|
+
from . import _multiarray_umath, overrides
|
|
12
|
+
from ._multiarray_umath import * # noqa: F403
|
|
13
|
+
|
|
14
|
+
# These imports are needed for backward compatibility,
|
|
15
|
+
# do not change them. issue gh-15518
|
|
16
|
+
# _get_ndarray_c_version is semi-public, on purpose not added to __all__
|
|
17
|
+
from ._multiarray_umath import ( # noqa: F401
|
|
18
|
+
_ARRAY_API,
|
|
19
|
+
_flagdict,
|
|
20
|
+
_get_madvise_hugepage,
|
|
21
|
+
_get_ndarray_c_version,
|
|
22
|
+
_monotonicity,
|
|
23
|
+
_place,
|
|
24
|
+
_reconstruct,
|
|
25
|
+
_set_madvise_hugepage,
|
|
26
|
+
_vec_string,
|
|
27
|
+
from_dlpack,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
__all__ = [
|
|
31
|
+
'_ARRAY_API', 'ALLOW_THREADS', 'BUFSIZE', 'CLIP', 'DATETIMEUNITS',
|
|
32
|
+
'ITEM_HASOBJECT', 'ITEM_IS_POINTER', 'LIST_PICKLE', 'MAXDIMS',
|
|
33
|
+
'MAY_SHARE_BOUNDS', 'MAY_SHARE_EXACT', 'NEEDS_INIT', 'NEEDS_PYAPI',
|
|
34
|
+
'RAISE', 'USE_GETITEM', 'USE_SETITEM', 'WRAP',
|
|
35
|
+
'_flagdict', 'from_dlpack', '_place', '_reconstruct', '_vec_string',
|
|
36
|
+
'_monotonicity', 'add_docstring', 'arange', 'array', 'asarray',
|
|
37
|
+
'asanyarray', 'ascontiguousarray', 'asfortranarray', 'bincount',
|
|
38
|
+
'broadcast', 'busday_count', 'busday_offset', 'busdaycalendar', 'can_cast',
|
|
39
|
+
'compare_chararrays', 'concatenate', 'copyto', 'correlate', 'correlate2',
|
|
40
|
+
'count_nonzero', 'c_einsum', 'datetime_as_string', 'datetime_data',
|
|
41
|
+
'dot', 'dragon4_positional', 'dragon4_scientific', 'dtype',
|
|
42
|
+
'empty', 'empty_like', 'error', 'flagsobj', 'flatiter', 'format_longfloat',
|
|
43
|
+
'frombuffer', 'fromfile', 'fromiter', 'fromstring',
|
|
44
|
+
'get_handler_name', 'get_handler_version', 'inner', 'interp',
|
|
45
|
+
'interp_complex', 'is_busday', 'lexsort', 'matmul', 'vecdot',
|
|
46
|
+
'may_share_memory', 'min_scalar_type', 'ndarray', 'nditer', 'nested_iters',
|
|
47
|
+
'normalize_axis_index', 'packbits', 'promote_types', 'putmask',
|
|
48
|
+
'ravel_multi_index', 'result_type', 'scalar', 'set_datetimeparse_function',
|
|
49
|
+
'set_typeDict', 'shares_memory', 'typeinfo',
|
|
50
|
+
'unpackbits', 'unravel_index', 'vdot', 'where', 'zeros']
|
|
51
|
+
|
|
52
|
+
# For backward compatibility, make sure pickle imports
|
|
53
|
+
# these functions from here
|
|
54
|
+
_reconstruct.__module__ = 'numpy._core.multiarray'
|
|
55
|
+
scalar.__module__ = 'numpy._core.multiarray'
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
from_dlpack.__module__ = 'numpy'
|
|
59
|
+
arange.__module__ = 'numpy'
|
|
60
|
+
array.__module__ = 'numpy'
|
|
61
|
+
asarray.__module__ = 'numpy'
|
|
62
|
+
asanyarray.__module__ = 'numpy'
|
|
63
|
+
ascontiguousarray.__module__ = 'numpy'
|
|
64
|
+
asfortranarray.__module__ = 'numpy'
|
|
65
|
+
datetime_data.__module__ = 'numpy'
|
|
66
|
+
empty.__module__ = 'numpy'
|
|
67
|
+
frombuffer.__module__ = 'numpy'
|
|
68
|
+
fromfile.__module__ = 'numpy'
|
|
69
|
+
fromiter.__module__ = 'numpy'
|
|
70
|
+
frompyfunc.__module__ = 'numpy'
|
|
71
|
+
fromstring.__module__ = 'numpy'
|
|
72
|
+
may_share_memory.__module__ = 'numpy'
|
|
73
|
+
nested_iters.__module__ = 'numpy'
|
|
74
|
+
promote_types.__module__ = 'numpy'
|
|
75
|
+
zeros.__module__ = 'numpy'
|
|
76
|
+
normalize_axis_index.__module__ = 'numpy.lib.array_utils'
|
|
77
|
+
add_docstring.__module__ = 'numpy.lib'
|
|
78
|
+
compare_chararrays.__module__ = 'numpy.char'
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _override___module__():
|
|
82
|
+
namespace_names = globals()
|
|
83
|
+
for ufunc_name in [
|
|
84
|
+
'absolute', 'arccos', 'arccosh', 'add', 'arcsin', 'arcsinh', 'arctan',
|
|
85
|
+
'arctan2', 'arctanh', 'bitwise_and', 'bitwise_count', 'invert',
|
|
86
|
+
'left_shift', 'bitwise_or', 'right_shift', 'bitwise_xor', 'cbrt',
|
|
87
|
+
'ceil', 'conjugate', 'copysign', 'cos', 'cosh', 'deg2rad', 'degrees',
|
|
88
|
+
'divide', 'divmod', 'equal', 'exp', 'exp2', 'expm1', 'fabs',
|
|
89
|
+
'float_power', 'floor', 'floor_divide', 'fmax', 'fmin', 'fmod',
|
|
90
|
+
'frexp', 'gcd', 'greater', 'greater_equal', 'heaviside', 'hypot',
|
|
91
|
+
'isfinite', 'isinf', 'isnan', 'isnat', 'lcm', 'ldexp', 'less',
|
|
92
|
+
'less_equal', 'log', 'log10', 'log1p', 'log2', 'logaddexp',
|
|
93
|
+
'logaddexp2', 'logical_and', 'logical_not', 'logical_or',
|
|
94
|
+
'logical_xor', 'matmul', 'matvec', 'maximum', 'minimum', 'remainder',
|
|
95
|
+
'modf', 'multiply', 'negative', 'nextafter', 'not_equal', 'positive',
|
|
96
|
+
'power', 'rad2deg', 'radians', 'reciprocal', 'rint', 'sign', 'signbit',
|
|
97
|
+
'sin', 'sinh', 'spacing', 'sqrt', 'square', 'subtract', 'tan', 'tanh',
|
|
98
|
+
'trunc', 'vecdot', 'vecmat',
|
|
99
|
+
]:
|
|
100
|
+
ufunc = namespace_names[ufunc_name]
|
|
101
|
+
ufunc.__module__ = "numpy"
|
|
102
|
+
ufunc.__qualname__ = ufunc_name
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
_override___module__()
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# We can't verify dispatcher signatures because NumPy's C functions don't
|
|
109
|
+
# support introspection.
|
|
110
|
+
array_function_from_c_func_and_dispatcher = functools.partial(
|
|
111
|
+
overrides.array_function_from_dispatcher,
|
|
112
|
+
module='numpy', docs_from_dispatcher=True, verify=False)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.empty_like)
|
|
116
|
+
def empty_like(
|
|
117
|
+
prototype, dtype=None, order=None, subok=None, shape=None, *, device=None
|
|
118
|
+
):
|
|
119
|
+
"""
|
|
120
|
+
empty_like(prototype, dtype=None, order='K', subok=True, shape=None, *,
|
|
121
|
+
device=None)
|
|
122
|
+
|
|
123
|
+
Return a new array with the same shape and type as a given array.
|
|
124
|
+
|
|
125
|
+
Parameters
|
|
126
|
+
----------
|
|
127
|
+
prototype : array_like
|
|
128
|
+
The shape and data-type of `prototype` define these same attributes
|
|
129
|
+
of the returned array.
|
|
130
|
+
dtype : data-type, optional
|
|
131
|
+
Overrides the data type of the result.
|
|
132
|
+
order : {'C', 'F', 'A', or 'K'}, optional
|
|
133
|
+
Overrides the memory layout of the result. 'C' means C-order,
|
|
134
|
+
'F' means F-order, 'A' means 'F' if `prototype` is Fortran
|
|
135
|
+
contiguous, 'C' otherwise. 'K' means match the layout of `prototype`
|
|
136
|
+
as closely as possible.
|
|
137
|
+
subok : bool, optional.
|
|
138
|
+
If True, then the newly created array will use the sub-class
|
|
139
|
+
type of `prototype`, otherwise it will be a base-class array. Defaults
|
|
140
|
+
to True.
|
|
141
|
+
shape : int or sequence of ints, optional.
|
|
142
|
+
Overrides the shape of the result. If order='K' and the number of
|
|
143
|
+
dimensions is unchanged, will try to keep order, otherwise,
|
|
144
|
+
order='C' is implied.
|
|
145
|
+
device : str, optional
|
|
146
|
+
The device on which to place the created array. Default: None.
|
|
147
|
+
For Array-API interoperability only, so must be ``"cpu"`` if passed.
|
|
148
|
+
|
|
149
|
+
.. versionadded:: 2.0.0
|
|
150
|
+
|
|
151
|
+
Returns
|
|
152
|
+
-------
|
|
153
|
+
out : ndarray
|
|
154
|
+
Array of uninitialized (arbitrary) data with the same
|
|
155
|
+
shape and type as `prototype`.
|
|
156
|
+
|
|
157
|
+
See Also
|
|
158
|
+
--------
|
|
159
|
+
ones_like : Return an array of ones with shape and type of input.
|
|
160
|
+
zeros_like : Return an array of zeros with shape and type of input.
|
|
161
|
+
full_like : Return a new array with shape of input filled with value.
|
|
162
|
+
empty : Return a new uninitialized array.
|
|
163
|
+
|
|
164
|
+
Notes
|
|
165
|
+
-----
|
|
166
|
+
Unlike other array creation functions (e.g. `zeros_like`, `ones_like`,
|
|
167
|
+
`full_like`), `empty_like` does not initialize the values of the array,
|
|
168
|
+
and may therefore be marginally faster. However, the values stored in the
|
|
169
|
+
newly allocated array are arbitrary. For reproducible behavior, be sure
|
|
170
|
+
to set each element of the array before reading.
|
|
171
|
+
|
|
172
|
+
Examples
|
|
173
|
+
--------
|
|
174
|
+
>>> import numpy as np
|
|
175
|
+
>>> a = ([1,2,3], [4,5,6]) # a is array-like
|
|
176
|
+
>>> np.empty_like(a)
|
|
177
|
+
array([[-1073741821, -1073741821, 3], # uninitialized
|
|
178
|
+
[ 0, 0, -1073741821]])
|
|
179
|
+
>>> a = np.array([[1., 2., 3.],[4.,5.,6.]])
|
|
180
|
+
>>> np.empty_like(a)
|
|
181
|
+
array([[ -2.00000715e+000, 1.48219694e-323, -2.00000572e+000], # uninitialized
|
|
182
|
+
[ 4.38791518e-305, -2.00000715e+000, 4.17269252e-309]])
|
|
183
|
+
|
|
184
|
+
"""
|
|
185
|
+
return (prototype,)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.concatenate)
|
|
189
|
+
def concatenate(arrays, axis=None, out=None, *, dtype=None, casting=None):
|
|
190
|
+
"""
|
|
191
|
+
concatenate(
|
|
192
|
+
(a1, a2, ...),
|
|
193
|
+
axis=0,
|
|
194
|
+
out=None,
|
|
195
|
+
dtype=None,
|
|
196
|
+
casting="same_kind"
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
Join a sequence of arrays along an existing axis.
|
|
200
|
+
|
|
201
|
+
Parameters
|
|
202
|
+
----------
|
|
203
|
+
a1, a2, ... : sequence of array_like
|
|
204
|
+
The arrays must have the same shape, except in the dimension
|
|
205
|
+
corresponding to `axis` (the first, by default).
|
|
206
|
+
axis : int, optional
|
|
207
|
+
The axis along which the arrays will be joined. If axis is None,
|
|
208
|
+
arrays are flattened before use. Default is 0.
|
|
209
|
+
out : ndarray, optional
|
|
210
|
+
If provided, the destination to place the result. The shape must be
|
|
211
|
+
correct, matching that of what concatenate would have returned if no
|
|
212
|
+
out argument were specified.
|
|
213
|
+
dtype : str or dtype
|
|
214
|
+
If provided, the destination array will have this dtype. Cannot be
|
|
215
|
+
provided together with `out`.
|
|
216
|
+
|
|
217
|
+
.. versionadded:: 1.20.0
|
|
218
|
+
|
|
219
|
+
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
|
|
220
|
+
Controls what kind of data casting may occur. Defaults to 'same_kind'.
|
|
221
|
+
For a description of the options, please see :term:`casting`.
|
|
222
|
+
|
|
223
|
+
.. versionadded:: 1.20.0
|
|
224
|
+
|
|
225
|
+
Returns
|
|
226
|
+
-------
|
|
227
|
+
res : ndarray
|
|
228
|
+
The concatenated array.
|
|
229
|
+
|
|
230
|
+
See Also
|
|
231
|
+
--------
|
|
232
|
+
ma.concatenate : Concatenate function that preserves input masks.
|
|
233
|
+
array_split : Split an array into multiple sub-arrays of equal or
|
|
234
|
+
near-equal size.
|
|
235
|
+
split : Split array into a list of multiple sub-arrays of equal size.
|
|
236
|
+
hsplit : Split array into multiple sub-arrays horizontally (column wise).
|
|
237
|
+
vsplit : Split array into multiple sub-arrays vertically (row wise).
|
|
238
|
+
dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).
|
|
239
|
+
stack : Stack a sequence of arrays along a new axis.
|
|
240
|
+
block : Assemble arrays from blocks.
|
|
241
|
+
hstack : Stack arrays in sequence horizontally (column wise).
|
|
242
|
+
vstack : Stack arrays in sequence vertically (row wise).
|
|
243
|
+
dstack : Stack arrays in sequence depth wise (along third dimension).
|
|
244
|
+
column_stack : Stack 1-D arrays as columns into a 2-D array.
|
|
245
|
+
|
|
246
|
+
Notes
|
|
247
|
+
-----
|
|
248
|
+
When one or more of the arrays to be concatenated is a MaskedArray,
|
|
249
|
+
this function will return a MaskedArray object instead of an ndarray,
|
|
250
|
+
but the input masks are *not* preserved. In cases where a MaskedArray
|
|
251
|
+
is expected as input, use the ma.concatenate function from the masked
|
|
252
|
+
array module instead.
|
|
253
|
+
|
|
254
|
+
Examples
|
|
255
|
+
--------
|
|
256
|
+
>>> import numpy as np
|
|
257
|
+
>>> a = np.array([[1, 2], [3, 4]])
|
|
258
|
+
>>> b = np.array([[5, 6]])
|
|
259
|
+
>>> np.concatenate((a, b), axis=0)
|
|
260
|
+
array([[1, 2],
|
|
261
|
+
[3, 4],
|
|
262
|
+
[5, 6]])
|
|
263
|
+
>>> np.concatenate((a, b.T), axis=1)
|
|
264
|
+
array([[1, 2, 5],
|
|
265
|
+
[3, 4, 6]])
|
|
266
|
+
>>> np.concatenate((a, b), axis=None)
|
|
267
|
+
array([1, 2, 3, 4, 5, 6])
|
|
268
|
+
|
|
269
|
+
This function will not preserve masking of MaskedArray inputs.
|
|
270
|
+
|
|
271
|
+
>>> a = np.ma.arange(3)
|
|
272
|
+
>>> a[1] = np.ma.masked
|
|
273
|
+
>>> b = np.arange(2, 5)
|
|
274
|
+
>>> a
|
|
275
|
+
masked_array(data=[0, --, 2],
|
|
276
|
+
mask=[False, True, False],
|
|
277
|
+
fill_value=999999)
|
|
278
|
+
>>> b
|
|
279
|
+
array([2, 3, 4])
|
|
280
|
+
>>> np.concatenate([a, b])
|
|
281
|
+
masked_array(data=[0, 1, 2, 2, 3, 4],
|
|
282
|
+
mask=False,
|
|
283
|
+
fill_value=999999)
|
|
284
|
+
>>> np.ma.concatenate([a, b])
|
|
285
|
+
masked_array(data=[0, --, 2, 2, 3, 4],
|
|
286
|
+
mask=[False, True, False, False, False, False],
|
|
287
|
+
fill_value=999999)
|
|
288
|
+
|
|
289
|
+
"""
|
|
290
|
+
if out is not None:
|
|
291
|
+
# optimize for the typical case where only arrays is provided
|
|
292
|
+
arrays = list(arrays)
|
|
293
|
+
arrays.append(out)
|
|
294
|
+
return arrays
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.inner)
|
|
298
|
+
def inner(a, b):
|
|
299
|
+
"""
|
|
300
|
+
inner(a, b, /)
|
|
301
|
+
|
|
302
|
+
Inner product of two arrays.
|
|
303
|
+
|
|
304
|
+
Ordinary inner product of vectors for 1-D arrays (without complex
|
|
305
|
+
conjugation), in higher dimensions a sum product over the last axes.
|
|
306
|
+
|
|
307
|
+
Parameters
|
|
308
|
+
----------
|
|
309
|
+
a, b : array_like
|
|
310
|
+
If `a` and `b` are nonscalar, their last dimensions must match.
|
|
311
|
+
|
|
312
|
+
Returns
|
|
313
|
+
-------
|
|
314
|
+
out : ndarray
|
|
315
|
+
If `a` and `b` are both
|
|
316
|
+
scalars or both 1-D arrays then a scalar is returned; otherwise
|
|
317
|
+
an array is returned.
|
|
318
|
+
``out.shape = (*a.shape[:-1], *b.shape[:-1])``
|
|
319
|
+
|
|
320
|
+
Raises
|
|
321
|
+
------
|
|
322
|
+
ValueError
|
|
323
|
+
If both `a` and `b` are nonscalar and their last dimensions have
|
|
324
|
+
different sizes.
|
|
325
|
+
|
|
326
|
+
See Also
|
|
327
|
+
--------
|
|
328
|
+
tensordot : Sum products over arbitrary axes.
|
|
329
|
+
dot : Generalised matrix product, using second last dimension of `b`.
|
|
330
|
+
vecdot : Vector dot product of two arrays.
|
|
331
|
+
einsum : Einstein summation convention.
|
|
332
|
+
|
|
333
|
+
Notes
|
|
334
|
+
-----
|
|
335
|
+
For vectors (1-D arrays) it computes the ordinary inner-product::
|
|
336
|
+
|
|
337
|
+
np.inner(a, b) = sum(a[:]*b[:])
|
|
338
|
+
|
|
339
|
+
More generally, if ``ndim(a) = r > 0`` and ``ndim(b) = s > 0``::
|
|
340
|
+
|
|
341
|
+
np.inner(a, b) = np.tensordot(a, b, axes=(-1,-1))
|
|
342
|
+
|
|
343
|
+
or explicitly::
|
|
344
|
+
|
|
345
|
+
np.inner(a, b)[i0,...,ir-2,j0,...,js-2]
|
|
346
|
+
= sum(a[i0,...,ir-2,:]*b[j0,...,js-2,:])
|
|
347
|
+
|
|
348
|
+
In addition `a` or `b` may be scalars, in which case::
|
|
349
|
+
|
|
350
|
+
np.inner(a,b) = a*b
|
|
351
|
+
|
|
352
|
+
Examples
|
|
353
|
+
--------
|
|
354
|
+
Ordinary inner product for vectors:
|
|
355
|
+
|
|
356
|
+
>>> import numpy as np
|
|
357
|
+
>>> a = np.array([1,2,3])
|
|
358
|
+
>>> b = np.array([0,1,0])
|
|
359
|
+
>>> np.inner(a, b)
|
|
360
|
+
2
|
|
361
|
+
|
|
362
|
+
Some multidimensional examples:
|
|
363
|
+
|
|
364
|
+
>>> a = np.arange(24).reshape((2,3,4))
|
|
365
|
+
>>> b = np.arange(4)
|
|
366
|
+
>>> c = np.inner(a, b)
|
|
367
|
+
>>> c.shape
|
|
368
|
+
(2, 3)
|
|
369
|
+
>>> c
|
|
370
|
+
array([[ 14, 38, 62],
|
|
371
|
+
[ 86, 110, 134]])
|
|
372
|
+
|
|
373
|
+
>>> a = np.arange(2).reshape((1,1,2))
|
|
374
|
+
>>> b = np.arange(6).reshape((3,2))
|
|
375
|
+
>>> c = np.inner(a, b)
|
|
376
|
+
>>> c.shape
|
|
377
|
+
(1, 1, 3)
|
|
378
|
+
>>> c
|
|
379
|
+
array([[[1, 3, 5]]])
|
|
380
|
+
|
|
381
|
+
An example where `b` is a scalar:
|
|
382
|
+
|
|
383
|
+
>>> np.inner(np.eye(2), 7)
|
|
384
|
+
array([[7., 0.],
|
|
385
|
+
[0., 7.]])
|
|
386
|
+
|
|
387
|
+
"""
|
|
388
|
+
return (a, b)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.where)
|
|
392
|
+
def where(condition, x=None, y=None):
|
|
393
|
+
"""
|
|
394
|
+
where(condition, [x, y], /)
|
|
395
|
+
|
|
396
|
+
Return elements chosen from `x` or `y` depending on `condition`.
|
|
397
|
+
|
|
398
|
+
.. note::
|
|
399
|
+
When only `condition` is provided, this function is a shorthand for
|
|
400
|
+
``np.asarray(condition).nonzero()``. Using `nonzero` directly should be
|
|
401
|
+
preferred, as it behaves correctly for subclasses. The rest of this
|
|
402
|
+
documentation covers only the case where all three arguments are
|
|
403
|
+
provided.
|
|
404
|
+
|
|
405
|
+
Parameters
|
|
406
|
+
----------
|
|
407
|
+
condition : array_like, bool
|
|
408
|
+
Where True, yield `x`, otherwise yield `y`.
|
|
409
|
+
x, y : array_like
|
|
410
|
+
Values from which to choose. `x`, `y` and `condition` need to be
|
|
411
|
+
broadcastable to some shape.
|
|
412
|
+
|
|
413
|
+
Returns
|
|
414
|
+
-------
|
|
415
|
+
out : ndarray
|
|
416
|
+
An array with elements from `x` where `condition` is True, and elements
|
|
417
|
+
from `y` elsewhere.
|
|
418
|
+
|
|
419
|
+
See Also
|
|
420
|
+
--------
|
|
421
|
+
choose
|
|
422
|
+
nonzero : The function that is called when x and y are omitted
|
|
423
|
+
|
|
424
|
+
Notes
|
|
425
|
+
-----
|
|
426
|
+
If all the arrays are 1-D, `where` is equivalent to::
|
|
427
|
+
|
|
428
|
+
[xv if c else yv
|
|
429
|
+
for c, xv, yv in zip(condition, x, y)]
|
|
430
|
+
|
|
431
|
+
Examples
|
|
432
|
+
--------
|
|
433
|
+
>>> import numpy as np
|
|
434
|
+
>>> a = np.arange(10)
|
|
435
|
+
>>> a
|
|
436
|
+
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
437
|
+
>>> np.where(a < 5, a, 10*a)
|
|
438
|
+
array([ 0, 1, 2, 3, 4, 50, 60, 70, 80, 90])
|
|
439
|
+
|
|
440
|
+
This can be used on multidimensional arrays too:
|
|
441
|
+
|
|
442
|
+
>>> np.where([[True, False], [True, True]],
|
|
443
|
+
... [[1, 2], [3, 4]],
|
|
444
|
+
... [[9, 8], [7, 6]])
|
|
445
|
+
array([[1, 8],
|
|
446
|
+
[3, 4]])
|
|
447
|
+
|
|
448
|
+
The shapes of x, y, and the condition are broadcast together:
|
|
449
|
+
|
|
450
|
+
>>> x, y = np.ogrid[:3, :4]
|
|
451
|
+
>>> np.where(x < y, x, 10 + y) # both x and 10+y are broadcast
|
|
452
|
+
array([[10, 0, 0, 0],
|
|
453
|
+
[10, 11, 1, 1],
|
|
454
|
+
[10, 11, 12, 2]])
|
|
455
|
+
|
|
456
|
+
>>> a = np.array([[0, 1, 2],
|
|
457
|
+
... [0, 2, 4],
|
|
458
|
+
... [0, 3, 6]])
|
|
459
|
+
>>> np.where(a < 4, a, -1) # -1 is broadcast
|
|
460
|
+
array([[ 0, 1, 2],
|
|
461
|
+
[ 0, 2, -1],
|
|
462
|
+
[ 0, 3, -1]])
|
|
463
|
+
"""
|
|
464
|
+
return (condition, x, y)
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.lexsort)
|
|
468
|
+
def lexsort(keys, axis=None):
|
|
469
|
+
"""
|
|
470
|
+
lexsort(keys, axis=-1)
|
|
471
|
+
|
|
472
|
+
Perform an indirect stable sort using a sequence of keys.
|
|
473
|
+
|
|
474
|
+
Given multiple sorting keys, lexsort returns an array of integer indices
|
|
475
|
+
that describes the sort order by multiple keys. The last key in the
|
|
476
|
+
sequence is used for the primary sort order, ties are broken by the
|
|
477
|
+
second-to-last key, and so on.
|
|
478
|
+
|
|
479
|
+
Parameters
|
|
480
|
+
----------
|
|
481
|
+
keys : (k, m, n, ...) array-like
|
|
482
|
+
The `k` keys to be sorted. The *last* key (e.g, the last
|
|
483
|
+
row if `keys` is a 2D array) is the primary sort key.
|
|
484
|
+
Each element of `keys` along the zeroth axis must be
|
|
485
|
+
an array-like object of the same shape.
|
|
486
|
+
axis : int, optional
|
|
487
|
+
Axis to be indirectly sorted. By default, sort over the last axis
|
|
488
|
+
of each sequence. Separate slices along `axis` sorted over
|
|
489
|
+
independently; see last example.
|
|
490
|
+
|
|
491
|
+
Returns
|
|
492
|
+
-------
|
|
493
|
+
indices : (m, n, ...) ndarray of ints
|
|
494
|
+
Array of indices that sort the keys along the specified axis.
|
|
495
|
+
|
|
496
|
+
See Also
|
|
497
|
+
--------
|
|
498
|
+
argsort : Indirect sort.
|
|
499
|
+
ndarray.sort : In-place sort.
|
|
500
|
+
sort : Return a sorted copy of an array.
|
|
501
|
+
|
|
502
|
+
Examples
|
|
503
|
+
--------
|
|
504
|
+
Sort names: first by surname, then by name.
|
|
505
|
+
|
|
506
|
+
>>> import numpy as np
|
|
507
|
+
>>> surnames = ('Hertz', 'Galilei', 'Hertz')
|
|
508
|
+
>>> first_names = ('Heinrich', 'Galileo', 'Gustav')
|
|
509
|
+
>>> ind = np.lexsort((first_names, surnames))
|
|
510
|
+
>>> ind
|
|
511
|
+
array([1, 2, 0])
|
|
512
|
+
|
|
513
|
+
>>> [surnames[i] + ", " + first_names[i] for i in ind]
|
|
514
|
+
['Galilei, Galileo', 'Hertz, Gustav', 'Hertz, Heinrich']
|
|
515
|
+
|
|
516
|
+
Sort according to two numerical keys, first by elements
|
|
517
|
+
of ``a``, then breaking ties according to elements of ``b``:
|
|
518
|
+
|
|
519
|
+
>>> a = [1, 5, 1, 4, 3, 4, 4] # First sequence
|
|
520
|
+
>>> b = [9, 4, 0, 4, 0, 2, 1] # Second sequence
|
|
521
|
+
>>> ind = np.lexsort((b, a)) # Sort by `a`, then by `b`
|
|
522
|
+
>>> ind
|
|
523
|
+
array([2, 0, 4, 6, 5, 3, 1])
|
|
524
|
+
>>> [(a[i], b[i]) for i in ind]
|
|
525
|
+
[(1, 0), (1, 9), (3, 0), (4, 1), (4, 2), (4, 4), (5, 4)]
|
|
526
|
+
|
|
527
|
+
Compare against `argsort`, which would sort each key independently.
|
|
528
|
+
|
|
529
|
+
>>> np.argsort((b, a), kind='stable')
|
|
530
|
+
array([[2, 4, 6, 5, 1, 3, 0],
|
|
531
|
+
[0, 2, 4, 3, 5, 6, 1]])
|
|
532
|
+
|
|
533
|
+
To sort lexicographically with `argsort`, we would need to provide a
|
|
534
|
+
structured array.
|
|
535
|
+
|
|
536
|
+
>>> x = np.array([(ai, bi) for ai, bi in zip(a, b)],
|
|
537
|
+
... dtype = np.dtype([('x', int), ('y', int)]))
|
|
538
|
+
>>> np.argsort(x) # or np.argsort(x, order=('x', 'y'))
|
|
539
|
+
array([2, 0, 4, 6, 5, 3, 1])
|
|
540
|
+
|
|
541
|
+
The zeroth axis of `keys` always corresponds with the sequence of keys,
|
|
542
|
+
so 2D arrays are treated just like other sequences of keys.
|
|
543
|
+
|
|
544
|
+
>>> arr = np.asarray([b, a])
|
|
545
|
+
>>> ind2 = np.lexsort(arr)
|
|
546
|
+
>>> np.testing.assert_equal(ind2, ind)
|
|
547
|
+
|
|
548
|
+
Accordingly, the `axis` parameter refers to an axis of *each* key, not of
|
|
549
|
+
the `keys` argument itself. For instance, the array ``arr`` is treated as
|
|
550
|
+
a sequence of two 1-D keys, so specifying ``axis=0`` is equivalent to
|
|
551
|
+
using the default axis, ``axis=-1``.
|
|
552
|
+
|
|
553
|
+
>>> np.testing.assert_equal(np.lexsort(arr, axis=0),
|
|
554
|
+
... np.lexsort(arr, axis=-1))
|
|
555
|
+
|
|
556
|
+
For higher-dimensional arrays, the axis parameter begins to matter. The
|
|
557
|
+
resulting array has the same shape as each key, and the values are what
|
|
558
|
+
we would expect if `lexsort` were performed on corresponding slices
|
|
559
|
+
of the keys independently. For instance,
|
|
560
|
+
|
|
561
|
+
>>> x = [[1, 2, 3, 4],
|
|
562
|
+
... [4, 3, 2, 1],
|
|
563
|
+
... [2, 1, 4, 3]]
|
|
564
|
+
>>> y = [[2, 2, 1, 1],
|
|
565
|
+
... [1, 2, 1, 2],
|
|
566
|
+
... [1, 1, 2, 1]]
|
|
567
|
+
>>> np.lexsort((x, y), axis=1)
|
|
568
|
+
array([[2, 3, 0, 1],
|
|
569
|
+
[2, 0, 3, 1],
|
|
570
|
+
[1, 0, 3, 2]])
|
|
571
|
+
|
|
572
|
+
Each row of the result is what we would expect if we were to perform
|
|
573
|
+
`lexsort` on the corresponding row of the keys:
|
|
574
|
+
|
|
575
|
+
>>> for i in range(3):
|
|
576
|
+
... print(np.lexsort((x[i], y[i])))
|
|
577
|
+
[2 3 0 1]
|
|
578
|
+
[2 0 3 1]
|
|
579
|
+
[1 0 3 2]
|
|
580
|
+
|
|
581
|
+
"""
|
|
582
|
+
if isinstance(keys, tuple):
|
|
583
|
+
return keys
|
|
584
|
+
else:
|
|
585
|
+
return (keys,)
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.can_cast)
|
|
589
|
+
def can_cast(from_, to, casting=None):
|
|
590
|
+
"""
|
|
591
|
+
can_cast(from_, to, casting='safe')
|
|
592
|
+
|
|
593
|
+
Returns True if cast between data types can occur according to the
|
|
594
|
+
casting rule.
|
|
595
|
+
|
|
596
|
+
Parameters
|
|
597
|
+
----------
|
|
598
|
+
from_ : dtype, dtype specifier, NumPy scalar, or array
|
|
599
|
+
Data type, NumPy scalar, or array to cast from.
|
|
600
|
+
to : dtype or dtype specifier
|
|
601
|
+
Data type to cast to.
|
|
602
|
+
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
|
|
603
|
+
Controls what kind of data casting may occur.
|
|
604
|
+
|
|
605
|
+
* 'no' means the data types should not be cast at all.
|
|
606
|
+
* 'equiv' means only byte-order changes are allowed.
|
|
607
|
+
* 'safe' means only casts which can preserve values are allowed.
|
|
608
|
+
* 'same_kind' means only safe casts or casts within a kind,
|
|
609
|
+
like float64 to float32, are allowed.
|
|
610
|
+
* 'unsafe' means any data conversions may be done.
|
|
611
|
+
|
|
612
|
+
Returns
|
|
613
|
+
-------
|
|
614
|
+
out : bool
|
|
615
|
+
True if cast can occur according to the casting rule.
|
|
616
|
+
|
|
617
|
+
Notes
|
|
618
|
+
-----
|
|
619
|
+
.. versionchanged:: 2.0
|
|
620
|
+
This function does not support Python scalars anymore and does not
|
|
621
|
+
apply any value-based logic for 0-D arrays and NumPy scalars.
|
|
622
|
+
|
|
623
|
+
See also
|
|
624
|
+
--------
|
|
625
|
+
dtype, result_type
|
|
626
|
+
|
|
627
|
+
Examples
|
|
628
|
+
--------
|
|
629
|
+
Basic examples
|
|
630
|
+
|
|
631
|
+
>>> import numpy as np
|
|
632
|
+
>>> np.can_cast(np.int32, np.int64)
|
|
633
|
+
True
|
|
634
|
+
>>> np.can_cast(np.float64, complex)
|
|
635
|
+
True
|
|
636
|
+
>>> np.can_cast(complex, float)
|
|
637
|
+
False
|
|
638
|
+
|
|
639
|
+
>>> np.can_cast('i8', 'f8')
|
|
640
|
+
True
|
|
641
|
+
>>> np.can_cast('i8', 'f4')
|
|
642
|
+
False
|
|
643
|
+
>>> np.can_cast('i4', 'S4')
|
|
644
|
+
False
|
|
645
|
+
|
|
646
|
+
"""
|
|
647
|
+
return (from_,)
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.min_scalar_type)
|
|
651
|
+
def min_scalar_type(a):
|
|
652
|
+
"""
|
|
653
|
+
min_scalar_type(a, /)
|
|
654
|
+
|
|
655
|
+
For scalar ``a``, returns the data type with the smallest size
|
|
656
|
+
and smallest scalar kind which can hold its value. For non-scalar
|
|
657
|
+
array ``a``, returns the vector's dtype unmodified.
|
|
658
|
+
|
|
659
|
+
Floating point values are not demoted to integers,
|
|
660
|
+
and complex values are not demoted to floats.
|
|
661
|
+
|
|
662
|
+
Parameters
|
|
663
|
+
----------
|
|
664
|
+
a : scalar or array_like
|
|
665
|
+
The value whose minimal data type is to be found.
|
|
666
|
+
|
|
667
|
+
Returns
|
|
668
|
+
-------
|
|
669
|
+
out : dtype
|
|
670
|
+
The minimal data type.
|
|
671
|
+
|
|
672
|
+
See Also
|
|
673
|
+
--------
|
|
674
|
+
result_type, promote_types, dtype, can_cast
|
|
675
|
+
|
|
676
|
+
Examples
|
|
677
|
+
--------
|
|
678
|
+
>>> import numpy as np
|
|
679
|
+
>>> np.min_scalar_type(10)
|
|
680
|
+
dtype('uint8')
|
|
681
|
+
|
|
682
|
+
>>> np.min_scalar_type(-260)
|
|
683
|
+
dtype('int16')
|
|
684
|
+
|
|
685
|
+
>>> np.min_scalar_type(3.1)
|
|
686
|
+
dtype('float16')
|
|
687
|
+
|
|
688
|
+
>>> np.min_scalar_type(1e50)
|
|
689
|
+
dtype('float64')
|
|
690
|
+
|
|
691
|
+
>>> np.min_scalar_type(np.arange(4,dtype='f8'))
|
|
692
|
+
dtype('float64')
|
|
693
|
+
|
|
694
|
+
"""
|
|
695
|
+
return (a,)
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.result_type)
|
|
699
|
+
def result_type(*arrays_and_dtypes):
|
|
700
|
+
"""
|
|
701
|
+
result_type(*arrays_and_dtypes)
|
|
702
|
+
|
|
703
|
+
Returns the type that results from applying the NumPy
|
|
704
|
+
type promotion rules to the arguments.
|
|
705
|
+
|
|
706
|
+
Type promotion in NumPy works similarly to the rules in languages
|
|
707
|
+
like C++, with some slight differences. When both scalars and
|
|
708
|
+
arrays are used, the array's type takes precedence and the actual value
|
|
709
|
+
of the scalar is taken into account.
|
|
710
|
+
|
|
711
|
+
For example, calculating 3*a, where a is an array of 32-bit floats,
|
|
712
|
+
intuitively should result in a 32-bit float output. If the 3 is a
|
|
713
|
+
32-bit integer, the NumPy rules indicate it can't convert losslessly
|
|
714
|
+
into a 32-bit float, so a 64-bit float should be the result type.
|
|
715
|
+
By examining the value of the constant, '3', we see that it fits in
|
|
716
|
+
an 8-bit integer, which can be cast losslessly into the 32-bit float.
|
|
717
|
+
|
|
718
|
+
Parameters
|
|
719
|
+
----------
|
|
720
|
+
arrays_and_dtypes : list of arrays and dtypes
|
|
721
|
+
The operands of some operation whose result type is needed.
|
|
722
|
+
|
|
723
|
+
Returns
|
|
724
|
+
-------
|
|
725
|
+
out : dtype
|
|
726
|
+
The result type.
|
|
727
|
+
|
|
728
|
+
See also
|
|
729
|
+
--------
|
|
730
|
+
dtype, promote_types, min_scalar_type, can_cast
|
|
731
|
+
|
|
732
|
+
Notes
|
|
733
|
+
-----
|
|
734
|
+
The specific algorithm used is as follows.
|
|
735
|
+
|
|
736
|
+
Categories are determined by first checking which of boolean,
|
|
737
|
+
integer (int/uint), or floating point (float/complex) the maximum
|
|
738
|
+
kind of all the arrays and the scalars are.
|
|
739
|
+
|
|
740
|
+
If there are only scalars or the maximum category of the scalars
|
|
741
|
+
is higher than the maximum category of the arrays,
|
|
742
|
+
the data types are combined with :func:`promote_types`
|
|
743
|
+
to produce the return value.
|
|
744
|
+
|
|
745
|
+
Otherwise, `min_scalar_type` is called on each scalar, and
|
|
746
|
+
the resulting data types are all combined with :func:`promote_types`
|
|
747
|
+
to produce the return value.
|
|
748
|
+
|
|
749
|
+
The set of int values is not a subset of the uint values for types
|
|
750
|
+
with the same number of bits, something not reflected in
|
|
751
|
+
:func:`min_scalar_type`, but handled as a special case in `result_type`.
|
|
752
|
+
|
|
753
|
+
Examples
|
|
754
|
+
--------
|
|
755
|
+
>>> import numpy as np
|
|
756
|
+
>>> np.result_type(3, np.arange(7, dtype='i1'))
|
|
757
|
+
dtype('int8')
|
|
758
|
+
|
|
759
|
+
>>> np.result_type('i4', 'c8')
|
|
760
|
+
dtype('complex128')
|
|
761
|
+
|
|
762
|
+
>>> np.result_type(3.0, -2)
|
|
763
|
+
dtype('float64')
|
|
764
|
+
|
|
765
|
+
"""
|
|
766
|
+
return arrays_and_dtypes
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.dot)
|
|
770
|
+
def dot(a, b, out=None):
|
|
771
|
+
"""
|
|
772
|
+
dot(a, b, out=None)
|
|
773
|
+
|
|
774
|
+
Dot product of two arrays. Specifically,
|
|
775
|
+
|
|
776
|
+
- If both `a` and `b` are 1-D arrays, it is inner product of vectors
|
|
777
|
+
(without complex conjugation).
|
|
778
|
+
|
|
779
|
+
- If both `a` and `b` are 2-D arrays, it is matrix multiplication,
|
|
780
|
+
but using :func:`matmul` or ``a @ b`` is preferred.
|
|
781
|
+
|
|
782
|
+
- If either `a` or `b` is 0-D (scalar), it is equivalent to
|
|
783
|
+
:func:`multiply` and using ``numpy.multiply(a, b)`` or ``a * b`` is
|
|
784
|
+
preferred.
|
|
785
|
+
|
|
786
|
+
- If `a` is an N-D array and `b` is a 1-D array, it is a sum product over
|
|
787
|
+
the last axis of `a` and `b`.
|
|
788
|
+
|
|
789
|
+
- If `a` is an N-D array and `b` is an M-D array (where ``M>=2``), it is a
|
|
790
|
+
sum product over the last axis of `a` and the second-to-last axis of
|
|
791
|
+
`b`::
|
|
792
|
+
|
|
793
|
+
dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
|
|
794
|
+
|
|
795
|
+
It uses an optimized BLAS library when possible (see `numpy.linalg`).
|
|
796
|
+
|
|
797
|
+
Parameters
|
|
798
|
+
----------
|
|
799
|
+
a : array_like
|
|
800
|
+
First argument.
|
|
801
|
+
b : array_like
|
|
802
|
+
Second argument.
|
|
803
|
+
out : ndarray, optional
|
|
804
|
+
Output argument. This must have the exact kind that would be returned
|
|
805
|
+
if it was not used. In particular, it must have the right type, must be
|
|
806
|
+
C-contiguous, and its dtype must be the dtype that would be returned
|
|
807
|
+
for `dot(a,b)`. This is a performance feature. Therefore, if these
|
|
808
|
+
conditions are not met, an exception is raised, instead of attempting
|
|
809
|
+
to be flexible.
|
|
810
|
+
|
|
811
|
+
Returns
|
|
812
|
+
-------
|
|
813
|
+
output : ndarray
|
|
814
|
+
Returns the dot product of `a` and `b`. If `a` and `b` are both
|
|
815
|
+
scalars or both 1-D arrays then a scalar is returned; otherwise
|
|
816
|
+
an array is returned.
|
|
817
|
+
If `out` is given, then it is returned.
|
|
818
|
+
|
|
819
|
+
Raises
|
|
820
|
+
------
|
|
821
|
+
ValueError
|
|
822
|
+
If the last dimension of `a` is not the same size as
|
|
823
|
+
the second-to-last dimension of `b`.
|
|
824
|
+
|
|
825
|
+
See Also
|
|
826
|
+
--------
|
|
827
|
+
vdot : Complex-conjugating dot product.
|
|
828
|
+
vecdot : Vector dot product of two arrays.
|
|
829
|
+
tensordot : Sum products over arbitrary axes.
|
|
830
|
+
einsum : Einstein summation convention.
|
|
831
|
+
matmul : '@' operator as method with out parameter.
|
|
832
|
+
linalg.multi_dot : Chained dot product.
|
|
833
|
+
|
|
834
|
+
Examples
|
|
835
|
+
--------
|
|
836
|
+
>>> import numpy as np
|
|
837
|
+
>>> np.dot(3, 4)
|
|
838
|
+
12
|
|
839
|
+
|
|
840
|
+
Neither argument is complex-conjugated:
|
|
841
|
+
|
|
842
|
+
>>> np.dot([2j, 3j], [2j, 3j])
|
|
843
|
+
(-13+0j)
|
|
844
|
+
|
|
845
|
+
For 2-D arrays it is the matrix product:
|
|
846
|
+
|
|
847
|
+
>>> a = [[1, 0], [0, 1]]
|
|
848
|
+
>>> b = [[4, 1], [2, 2]]
|
|
849
|
+
>>> np.dot(a, b)
|
|
850
|
+
array([[4, 1],
|
|
851
|
+
[2, 2]])
|
|
852
|
+
|
|
853
|
+
>>> a = np.arange(3*4*5*6).reshape((3,4,5,6))
|
|
854
|
+
>>> b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
|
|
855
|
+
>>> np.dot(a, b)[2,3,2,1,2,2]
|
|
856
|
+
499128
|
|
857
|
+
>>> sum(a[2,3,2,:] * b[1,2,:,2])
|
|
858
|
+
499128
|
|
859
|
+
|
|
860
|
+
"""
|
|
861
|
+
return (a, b, out)
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.vdot)
|
|
865
|
+
def vdot(a, b):
|
|
866
|
+
r"""
|
|
867
|
+
vdot(a, b, /)
|
|
868
|
+
|
|
869
|
+
Return the dot product of two vectors.
|
|
870
|
+
|
|
871
|
+
The `vdot` function handles complex numbers differently than `dot`:
|
|
872
|
+
if the first argument is complex, it is replaced by its complex conjugate
|
|
873
|
+
in the dot product calculation. `vdot` also handles multidimensional
|
|
874
|
+
arrays differently than `dot`: it does not perform a matrix product, but
|
|
875
|
+
flattens the arguments to 1-D arrays before taking a vector dot product.
|
|
876
|
+
|
|
877
|
+
Consequently, when the arguments are 2-D arrays of the same shape, this
|
|
878
|
+
function effectively returns their
|
|
879
|
+
`Frobenius inner product <https://en.wikipedia.org/wiki/Frobenius_inner_product>`_
|
|
880
|
+
(also known as the *trace inner product* or the *standard inner product*
|
|
881
|
+
on a vector space of matrices).
|
|
882
|
+
|
|
883
|
+
Parameters
|
|
884
|
+
----------
|
|
885
|
+
a : array_like
|
|
886
|
+
If `a` is complex the complex conjugate is taken before calculation
|
|
887
|
+
of the dot product.
|
|
888
|
+
b : array_like
|
|
889
|
+
Second argument to the dot product.
|
|
890
|
+
|
|
891
|
+
Returns
|
|
892
|
+
-------
|
|
893
|
+
output : ndarray
|
|
894
|
+
Dot product of `a` and `b`. Can be an int, float, or
|
|
895
|
+
complex depending on the types of `a` and `b`.
|
|
896
|
+
|
|
897
|
+
See Also
|
|
898
|
+
--------
|
|
899
|
+
dot : Return the dot product without using the complex conjugate of the
|
|
900
|
+
first argument.
|
|
901
|
+
|
|
902
|
+
Examples
|
|
903
|
+
--------
|
|
904
|
+
>>> import numpy as np
|
|
905
|
+
>>> a = np.array([1+2j,3+4j])
|
|
906
|
+
>>> b = np.array([5+6j,7+8j])
|
|
907
|
+
>>> np.vdot(a, b)
|
|
908
|
+
(70-8j)
|
|
909
|
+
>>> np.vdot(b, a)
|
|
910
|
+
(70+8j)
|
|
911
|
+
|
|
912
|
+
Note that higher-dimensional arrays are flattened!
|
|
913
|
+
|
|
914
|
+
>>> a = np.array([[1, 4], [5, 6]])
|
|
915
|
+
>>> b = np.array([[4, 1], [2, 2]])
|
|
916
|
+
>>> np.vdot(a, b)
|
|
917
|
+
30
|
|
918
|
+
>>> np.vdot(b, a)
|
|
919
|
+
30
|
|
920
|
+
>>> 1*4 + 4*1 + 5*2 + 6*2
|
|
921
|
+
30
|
|
922
|
+
|
|
923
|
+
""" # noqa: E501
|
|
924
|
+
return (a, b)
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.bincount)
|
|
928
|
+
def bincount(x, weights=None, minlength=None):
|
|
929
|
+
"""
|
|
930
|
+
bincount(x, /, weights=None, minlength=0)
|
|
931
|
+
|
|
932
|
+
Count number of occurrences of each value in array of non-negative ints.
|
|
933
|
+
|
|
934
|
+
The number of bins (of size 1) is one larger than the largest value in
|
|
935
|
+
`x`. If `minlength` is specified, there will be at least this number
|
|
936
|
+
of bins in the output array (though it will be longer if necessary,
|
|
937
|
+
depending on the contents of `x`).
|
|
938
|
+
Each bin gives the number of occurrences of its index value in `x`.
|
|
939
|
+
If `weights` is specified the input array is weighted by it, i.e. if a
|
|
940
|
+
value ``n`` is found at position ``i``, ``out[n] += weight[i]`` instead
|
|
941
|
+
of ``out[n] += 1``.
|
|
942
|
+
|
|
943
|
+
Parameters
|
|
944
|
+
----------
|
|
945
|
+
x : array_like, 1 dimension, nonnegative ints
|
|
946
|
+
Input array.
|
|
947
|
+
weights : array_like, optional
|
|
948
|
+
Weights, array of the same shape as `x`.
|
|
949
|
+
minlength : int, optional
|
|
950
|
+
A minimum number of bins for the output array.
|
|
951
|
+
|
|
952
|
+
Returns
|
|
953
|
+
-------
|
|
954
|
+
out : ndarray of ints
|
|
955
|
+
The result of binning the input array.
|
|
956
|
+
The length of `out` is equal to ``np.amax(x)+1``.
|
|
957
|
+
|
|
958
|
+
Raises
|
|
959
|
+
------
|
|
960
|
+
ValueError
|
|
961
|
+
If the input is not 1-dimensional, or contains elements with negative
|
|
962
|
+
values, or if `minlength` is negative.
|
|
963
|
+
TypeError
|
|
964
|
+
If the type of the input is float or complex.
|
|
965
|
+
|
|
966
|
+
See Also
|
|
967
|
+
--------
|
|
968
|
+
histogram, digitize, unique
|
|
969
|
+
|
|
970
|
+
Examples
|
|
971
|
+
--------
|
|
972
|
+
>>> import numpy as np
|
|
973
|
+
>>> np.bincount(np.arange(5))
|
|
974
|
+
array([1, 1, 1, 1, 1])
|
|
975
|
+
>>> np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))
|
|
976
|
+
array([1, 3, 1, 1, 0, 0, 0, 1])
|
|
977
|
+
|
|
978
|
+
>>> x = np.array([0, 1, 1, 3, 2, 1, 7, 23])
|
|
979
|
+
>>> np.bincount(x).size == np.amax(x)+1
|
|
980
|
+
True
|
|
981
|
+
|
|
982
|
+
The input array needs to be of integer dtype, otherwise a
|
|
983
|
+
TypeError is raised:
|
|
984
|
+
|
|
985
|
+
>>> np.bincount(np.arange(5, dtype=float))
|
|
986
|
+
Traceback (most recent call last):
|
|
987
|
+
...
|
|
988
|
+
TypeError: Cannot cast array data from dtype('float64') to dtype('int64')
|
|
989
|
+
according to the rule 'safe'
|
|
990
|
+
|
|
991
|
+
A possible use of ``bincount`` is to perform sums over
|
|
992
|
+
variable-size chunks of an array, using the ``weights`` keyword.
|
|
993
|
+
|
|
994
|
+
>>> w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6]) # weights
|
|
995
|
+
>>> x = np.array([0, 1, 1, 2, 2, 2])
|
|
996
|
+
>>> np.bincount(x, weights=w)
|
|
997
|
+
array([ 0.3, 0.7, 1.1])
|
|
998
|
+
|
|
999
|
+
"""
|
|
1000
|
+
return (x, weights)
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.ravel_multi_index)
|
|
1004
|
+
def ravel_multi_index(multi_index, dims, mode=None, order=None):
|
|
1005
|
+
"""
|
|
1006
|
+
ravel_multi_index(multi_index, dims, mode='raise', order='C')
|
|
1007
|
+
|
|
1008
|
+
Converts a tuple of index arrays into an array of flat
|
|
1009
|
+
indices, applying boundary modes to the multi-index.
|
|
1010
|
+
|
|
1011
|
+
Parameters
|
|
1012
|
+
----------
|
|
1013
|
+
multi_index : tuple of array_like
|
|
1014
|
+
A tuple of integer arrays, one array for each dimension.
|
|
1015
|
+
dims : tuple of ints
|
|
1016
|
+
The shape of array into which the indices from ``multi_index`` apply.
|
|
1017
|
+
mode : {'raise', 'wrap', 'clip'}, optional
|
|
1018
|
+
Specifies how out-of-bounds indices are handled. Can specify
|
|
1019
|
+
either one mode or a tuple of modes, one mode per index.
|
|
1020
|
+
|
|
1021
|
+
* 'raise' -- raise an error (default)
|
|
1022
|
+
* 'wrap' -- wrap around
|
|
1023
|
+
* 'clip' -- clip to the range
|
|
1024
|
+
|
|
1025
|
+
In 'clip' mode, a negative index which would normally
|
|
1026
|
+
wrap will clip to 0 instead.
|
|
1027
|
+
order : {'C', 'F'}, optional
|
|
1028
|
+
Determines whether the multi-index should be viewed as
|
|
1029
|
+
indexing in row-major (C-style) or column-major
|
|
1030
|
+
(Fortran-style) order.
|
|
1031
|
+
|
|
1032
|
+
Returns
|
|
1033
|
+
-------
|
|
1034
|
+
raveled_indices : ndarray
|
|
1035
|
+
An array of indices into the flattened version of an array
|
|
1036
|
+
of dimensions ``dims``.
|
|
1037
|
+
|
|
1038
|
+
See Also
|
|
1039
|
+
--------
|
|
1040
|
+
unravel_index
|
|
1041
|
+
|
|
1042
|
+
Examples
|
|
1043
|
+
--------
|
|
1044
|
+
>>> import numpy as np
|
|
1045
|
+
>>> arr = np.array([[3,6,6],[4,5,1]])
|
|
1046
|
+
>>> np.ravel_multi_index(arr, (7,6))
|
|
1047
|
+
array([22, 41, 37])
|
|
1048
|
+
>>> np.ravel_multi_index(arr, (7,6), order='F')
|
|
1049
|
+
array([31, 41, 13])
|
|
1050
|
+
>>> np.ravel_multi_index(arr, (4,6), mode='clip')
|
|
1051
|
+
array([22, 23, 19])
|
|
1052
|
+
>>> np.ravel_multi_index(arr, (4,4), mode=('clip','wrap'))
|
|
1053
|
+
array([12, 13, 13])
|
|
1054
|
+
|
|
1055
|
+
>>> np.ravel_multi_index((3,1,4,1), (6,7,8,9))
|
|
1056
|
+
1621
|
|
1057
|
+
"""
|
|
1058
|
+
return multi_index
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.unravel_index)
|
|
1062
|
+
def unravel_index(indices, shape=None, order=None):
|
|
1063
|
+
"""
|
|
1064
|
+
unravel_index(indices, shape, order='C')
|
|
1065
|
+
|
|
1066
|
+
Converts a flat index or array of flat indices into a tuple
|
|
1067
|
+
of coordinate arrays.
|
|
1068
|
+
|
|
1069
|
+
Parameters
|
|
1070
|
+
----------
|
|
1071
|
+
indices : array_like
|
|
1072
|
+
An integer array whose elements are indices into the flattened
|
|
1073
|
+
version of an array of dimensions ``shape``. Before version 1.6.0,
|
|
1074
|
+
this function accepted just one index value.
|
|
1075
|
+
shape : tuple of ints
|
|
1076
|
+
The shape of the array to use for unraveling ``indices``.
|
|
1077
|
+
order : {'C', 'F'}, optional
|
|
1078
|
+
Determines whether the indices should be viewed as indexing in
|
|
1079
|
+
row-major (C-style) or column-major (Fortran-style) order.
|
|
1080
|
+
|
|
1081
|
+
Returns
|
|
1082
|
+
-------
|
|
1083
|
+
unraveled_coords : tuple of ndarray
|
|
1084
|
+
Each array in the tuple has the same shape as the ``indices``
|
|
1085
|
+
array.
|
|
1086
|
+
|
|
1087
|
+
See Also
|
|
1088
|
+
--------
|
|
1089
|
+
ravel_multi_index
|
|
1090
|
+
|
|
1091
|
+
Examples
|
|
1092
|
+
--------
|
|
1093
|
+
>>> import numpy as np
|
|
1094
|
+
>>> np.unravel_index([22, 41, 37], (7,6))
|
|
1095
|
+
(array([3, 6, 6]), array([4, 5, 1]))
|
|
1096
|
+
>>> np.unravel_index([31, 41, 13], (7,6), order='F')
|
|
1097
|
+
(array([3, 6, 6]), array([4, 5, 1]))
|
|
1098
|
+
|
|
1099
|
+
>>> np.unravel_index(1621, (6,7,8,9))
|
|
1100
|
+
(3, 1, 4, 1)
|
|
1101
|
+
|
|
1102
|
+
"""
|
|
1103
|
+
return (indices,)
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.copyto)
|
|
1107
|
+
def copyto(dst, src, casting=None, where=None):
|
|
1108
|
+
"""
|
|
1109
|
+
copyto(dst, src, casting='same_kind', where=True)
|
|
1110
|
+
|
|
1111
|
+
Copies values from one array to another, broadcasting as necessary.
|
|
1112
|
+
|
|
1113
|
+
Raises a TypeError if the `casting` rule is violated, and if
|
|
1114
|
+
`where` is provided, it selects which elements to copy.
|
|
1115
|
+
|
|
1116
|
+
Parameters
|
|
1117
|
+
----------
|
|
1118
|
+
dst : ndarray
|
|
1119
|
+
The array into which values are copied.
|
|
1120
|
+
src : array_like
|
|
1121
|
+
The array from which values are copied.
|
|
1122
|
+
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
|
|
1123
|
+
Controls what kind of data casting may occur when copying.
|
|
1124
|
+
|
|
1125
|
+
* 'no' means the data types should not be cast at all.
|
|
1126
|
+
* 'equiv' means only byte-order changes are allowed.
|
|
1127
|
+
* 'safe' means only casts which can preserve values are allowed.
|
|
1128
|
+
* 'same_kind' means only safe casts or casts within a kind,
|
|
1129
|
+
like float64 to float32, are allowed.
|
|
1130
|
+
* 'unsafe' means any data conversions may be done.
|
|
1131
|
+
where : array_like of bool, optional
|
|
1132
|
+
A boolean array which is broadcasted to match the dimensions
|
|
1133
|
+
of `dst`, and selects elements to copy from `src` to `dst`
|
|
1134
|
+
wherever it contains the value True.
|
|
1135
|
+
|
|
1136
|
+
Examples
|
|
1137
|
+
--------
|
|
1138
|
+
>>> import numpy as np
|
|
1139
|
+
>>> A = np.array([4, 5, 6])
|
|
1140
|
+
>>> B = [1, 2, 3]
|
|
1141
|
+
>>> np.copyto(A, B)
|
|
1142
|
+
>>> A
|
|
1143
|
+
array([1, 2, 3])
|
|
1144
|
+
|
|
1145
|
+
>>> A = np.array([[1, 2, 3], [4, 5, 6]])
|
|
1146
|
+
>>> B = [[4, 5, 6], [7, 8, 9]]
|
|
1147
|
+
>>> np.copyto(A, B)
|
|
1148
|
+
>>> A
|
|
1149
|
+
array([[4, 5, 6],
|
|
1150
|
+
[7, 8, 9]])
|
|
1151
|
+
|
|
1152
|
+
"""
|
|
1153
|
+
return (dst, src, where)
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.putmask)
|
|
1157
|
+
def putmask(a, /, mask, values):
|
|
1158
|
+
"""
|
|
1159
|
+
putmask(a, mask, values)
|
|
1160
|
+
|
|
1161
|
+
Changes elements of an array based on conditional and input values.
|
|
1162
|
+
|
|
1163
|
+
Sets ``a.flat[n] = values[n]`` for each n where ``mask.flat[n]==True``.
|
|
1164
|
+
|
|
1165
|
+
If `values` is not the same size as `a` and `mask` then it will repeat.
|
|
1166
|
+
This gives behavior different from ``a[mask] = values``.
|
|
1167
|
+
|
|
1168
|
+
Parameters
|
|
1169
|
+
----------
|
|
1170
|
+
a : ndarray
|
|
1171
|
+
Target array.
|
|
1172
|
+
mask : array_like
|
|
1173
|
+
Boolean mask array. It has to be the same shape as `a`.
|
|
1174
|
+
values : array_like
|
|
1175
|
+
Values to put into `a` where `mask` is True. If `values` is smaller
|
|
1176
|
+
than `a` it will be repeated.
|
|
1177
|
+
|
|
1178
|
+
See Also
|
|
1179
|
+
--------
|
|
1180
|
+
place, put, take, copyto
|
|
1181
|
+
|
|
1182
|
+
Examples
|
|
1183
|
+
--------
|
|
1184
|
+
>>> import numpy as np
|
|
1185
|
+
>>> x = np.arange(6).reshape(2, 3)
|
|
1186
|
+
>>> np.putmask(x, x>2, x**2)
|
|
1187
|
+
>>> x
|
|
1188
|
+
array([[ 0, 1, 2],
|
|
1189
|
+
[ 9, 16, 25]])
|
|
1190
|
+
|
|
1191
|
+
If `values` is smaller than `a` it is repeated:
|
|
1192
|
+
|
|
1193
|
+
>>> x = np.arange(5)
|
|
1194
|
+
>>> np.putmask(x, x>1, [-33, -44])
|
|
1195
|
+
>>> x
|
|
1196
|
+
array([ 0, 1, -33, -44, -33])
|
|
1197
|
+
|
|
1198
|
+
"""
|
|
1199
|
+
return (a, mask, values)
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.packbits)
|
|
1203
|
+
def packbits(a, axis=None, bitorder='big'):
|
|
1204
|
+
"""
|
|
1205
|
+
packbits(a, /, axis=None, bitorder='big')
|
|
1206
|
+
|
|
1207
|
+
Packs the elements of a binary-valued array into bits in a uint8 array.
|
|
1208
|
+
|
|
1209
|
+
The result is padded to full bytes by inserting zero bits at the end.
|
|
1210
|
+
|
|
1211
|
+
Parameters
|
|
1212
|
+
----------
|
|
1213
|
+
a : array_like
|
|
1214
|
+
An array of integers or booleans whose elements should be packed to
|
|
1215
|
+
bits.
|
|
1216
|
+
axis : int, optional
|
|
1217
|
+
The dimension over which bit-packing is done.
|
|
1218
|
+
``None`` implies packing the flattened array.
|
|
1219
|
+
bitorder : {'big', 'little'}, optional
|
|
1220
|
+
The order of the input bits. 'big' will mimic bin(val),
|
|
1221
|
+
``[0, 0, 0, 0, 0, 0, 1, 1] => 3 = 0b00000011``, 'little' will
|
|
1222
|
+
reverse the order so ``[1, 1, 0, 0, 0, 0, 0, 0] => 3``.
|
|
1223
|
+
Defaults to 'big'.
|
|
1224
|
+
|
|
1225
|
+
Returns
|
|
1226
|
+
-------
|
|
1227
|
+
packed : ndarray
|
|
1228
|
+
Array of type uint8 whose elements represent bits corresponding to the
|
|
1229
|
+
logical (0 or nonzero) value of the input elements. The shape of
|
|
1230
|
+
`packed` has the same number of dimensions as the input (unless `axis`
|
|
1231
|
+
is None, in which case the output is 1-D).
|
|
1232
|
+
|
|
1233
|
+
See Also
|
|
1234
|
+
--------
|
|
1235
|
+
unpackbits: Unpacks elements of a uint8 array into a binary-valued output
|
|
1236
|
+
array.
|
|
1237
|
+
|
|
1238
|
+
Examples
|
|
1239
|
+
--------
|
|
1240
|
+
>>> import numpy as np
|
|
1241
|
+
>>> a = np.array([[[1,0,1],
|
|
1242
|
+
... [0,1,0]],
|
|
1243
|
+
... [[1,1,0],
|
|
1244
|
+
... [0,0,1]]])
|
|
1245
|
+
>>> b = np.packbits(a, axis=-1)
|
|
1246
|
+
>>> b
|
|
1247
|
+
array([[[160],
|
|
1248
|
+
[ 64]],
|
|
1249
|
+
[[192],
|
|
1250
|
+
[ 32]]], dtype=uint8)
|
|
1251
|
+
|
|
1252
|
+
Note that in binary 160 = 1010 0000, 64 = 0100 0000, 192 = 1100 0000,
|
|
1253
|
+
and 32 = 0010 0000.
|
|
1254
|
+
|
|
1255
|
+
"""
|
|
1256
|
+
return (a,)
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.unpackbits)
|
|
1260
|
+
def unpackbits(a, axis=None, count=None, bitorder='big'):
|
|
1261
|
+
"""
|
|
1262
|
+
unpackbits(a, /, axis=None, count=None, bitorder='big')
|
|
1263
|
+
|
|
1264
|
+
Unpacks elements of a uint8 array into a binary-valued output array.
|
|
1265
|
+
|
|
1266
|
+
Each element of `a` represents a bit-field that should be unpacked
|
|
1267
|
+
into a binary-valued output array. The shape of the output array is
|
|
1268
|
+
either 1-D (if `axis` is ``None``) or the same shape as the input
|
|
1269
|
+
array with unpacking done along the axis specified.
|
|
1270
|
+
|
|
1271
|
+
Parameters
|
|
1272
|
+
----------
|
|
1273
|
+
a : ndarray, uint8 type
|
|
1274
|
+
Input array.
|
|
1275
|
+
axis : int, optional
|
|
1276
|
+
The dimension over which bit-unpacking is done.
|
|
1277
|
+
``None`` implies unpacking the flattened array.
|
|
1278
|
+
count : int or None, optional
|
|
1279
|
+
The number of elements to unpack along `axis`, provided as a way
|
|
1280
|
+
of undoing the effect of packing a size that is not a multiple
|
|
1281
|
+
of eight. A non-negative number means to only unpack `count`
|
|
1282
|
+
bits. A negative number means to trim off that many bits from
|
|
1283
|
+
the end. ``None`` means to unpack the entire array (the
|
|
1284
|
+
default). Counts larger than the available number of bits will
|
|
1285
|
+
add zero padding to the output. Negative counts must not
|
|
1286
|
+
exceed the available number of bits.
|
|
1287
|
+
bitorder : {'big', 'little'}, optional
|
|
1288
|
+
The order of the returned bits. 'big' will mimic bin(val),
|
|
1289
|
+
``3 = 0b00000011 => [0, 0, 0, 0, 0, 0, 1, 1]``, 'little' will reverse
|
|
1290
|
+
the order to ``[1, 1, 0, 0, 0, 0, 0, 0]``.
|
|
1291
|
+
Defaults to 'big'.
|
|
1292
|
+
|
|
1293
|
+
Returns
|
|
1294
|
+
-------
|
|
1295
|
+
unpacked : ndarray, uint8 type
|
|
1296
|
+
The elements are binary-valued (0 or 1).
|
|
1297
|
+
|
|
1298
|
+
See Also
|
|
1299
|
+
--------
|
|
1300
|
+
packbits : Packs the elements of a binary-valued array into bits in
|
|
1301
|
+
a uint8 array.
|
|
1302
|
+
|
|
1303
|
+
Examples
|
|
1304
|
+
--------
|
|
1305
|
+
>>> import numpy as np
|
|
1306
|
+
>>> a = np.array([[2], [7], [23]], dtype=np.uint8)
|
|
1307
|
+
>>> a
|
|
1308
|
+
array([[ 2],
|
|
1309
|
+
[ 7],
|
|
1310
|
+
[23]], dtype=uint8)
|
|
1311
|
+
>>> b = np.unpackbits(a, axis=1)
|
|
1312
|
+
>>> b
|
|
1313
|
+
array([[0, 0, 0, 0, 0, 0, 1, 0],
|
|
1314
|
+
[0, 0, 0, 0, 0, 1, 1, 1],
|
|
1315
|
+
[0, 0, 0, 1, 0, 1, 1, 1]], dtype=uint8)
|
|
1316
|
+
>>> c = np.unpackbits(a, axis=1, count=-3)
|
|
1317
|
+
>>> c
|
|
1318
|
+
array([[0, 0, 0, 0, 0],
|
|
1319
|
+
[0, 0, 0, 0, 0],
|
|
1320
|
+
[0, 0, 0, 1, 0]], dtype=uint8)
|
|
1321
|
+
|
|
1322
|
+
>>> p = np.packbits(b, axis=0)
|
|
1323
|
+
>>> np.unpackbits(p, axis=0)
|
|
1324
|
+
array([[0, 0, 0, 0, 0, 0, 1, 0],
|
|
1325
|
+
[0, 0, 0, 0, 0, 1, 1, 1],
|
|
1326
|
+
[0, 0, 0, 1, 0, 1, 1, 1],
|
|
1327
|
+
[0, 0, 0, 0, 0, 0, 0, 0],
|
|
1328
|
+
[0, 0, 0, 0, 0, 0, 0, 0],
|
|
1329
|
+
[0, 0, 0, 0, 0, 0, 0, 0],
|
|
1330
|
+
[0, 0, 0, 0, 0, 0, 0, 0],
|
|
1331
|
+
[0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
|
|
1332
|
+
>>> np.array_equal(b, np.unpackbits(p, axis=0, count=b.shape[0]))
|
|
1333
|
+
True
|
|
1334
|
+
|
|
1335
|
+
"""
|
|
1336
|
+
return (a,)
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.shares_memory)
|
|
1340
|
+
def shares_memory(a, b, max_work=None):
|
|
1341
|
+
"""
|
|
1342
|
+
shares_memory(a, b, /, max_work=None)
|
|
1343
|
+
|
|
1344
|
+
Determine if two arrays share memory.
|
|
1345
|
+
|
|
1346
|
+
.. warning::
|
|
1347
|
+
|
|
1348
|
+
This function can be exponentially slow for some inputs, unless
|
|
1349
|
+
`max_work` is set to zero or a positive integer.
|
|
1350
|
+
If in doubt, use `numpy.may_share_memory` instead.
|
|
1351
|
+
|
|
1352
|
+
Parameters
|
|
1353
|
+
----------
|
|
1354
|
+
a, b : ndarray
|
|
1355
|
+
Input arrays
|
|
1356
|
+
max_work : int, optional
|
|
1357
|
+
Effort to spend on solving the overlap problem (maximum number
|
|
1358
|
+
of candidate solutions to consider). The following special
|
|
1359
|
+
values are recognized:
|
|
1360
|
+
|
|
1361
|
+
max_work=-1 (default)
|
|
1362
|
+
The problem is solved exactly. In this case, the function returns
|
|
1363
|
+
True only if there is an element shared between the arrays. Finding
|
|
1364
|
+
the exact solution may take extremely long in some cases.
|
|
1365
|
+
max_work=0
|
|
1366
|
+
Only the memory bounds of a and b are checked.
|
|
1367
|
+
This is equivalent to using ``may_share_memory()``.
|
|
1368
|
+
|
|
1369
|
+
Raises
|
|
1370
|
+
------
|
|
1371
|
+
numpy.exceptions.TooHardError
|
|
1372
|
+
Exceeded max_work.
|
|
1373
|
+
|
|
1374
|
+
Returns
|
|
1375
|
+
-------
|
|
1376
|
+
out : bool
|
|
1377
|
+
|
|
1378
|
+
See Also
|
|
1379
|
+
--------
|
|
1380
|
+
may_share_memory
|
|
1381
|
+
|
|
1382
|
+
Examples
|
|
1383
|
+
--------
|
|
1384
|
+
>>> import numpy as np
|
|
1385
|
+
>>> x = np.array([1, 2, 3, 4])
|
|
1386
|
+
>>> np.shares_memory(x, np.array([5, 6, 7]))
|
|
1387
|
+
False
|
|
1388
|
+
>>> np.shares_memory(x[::2], x)
|
|
1389
|
+
True
|
|
1390
|
+
>>> np.shares_memory(x[::2], x[1::2])
|
|
1391
|
+
False
|
|
1392
|
+
|
|
1393
|
+
Checking whether two arrays share memory is NP-complete, and
|
|
1394
|
+
runtime may increase exponentially in the number of
|
|
1395
|
+
dimensions. Hence, `max_work` should generally be set to a finite
|
|
1396
|
+
number, as it is possible to construct examples that take
|
|
1397
|
+
extremely long to run:
|
|
1398
|
+
|
|
1399
|
+
>>> from numpy.lib.stride_tricks import as_strided
|
|
1400
|
+
>>> x = np.zeros([192163377], dtype=np.int8)
|
|
1401
|
+
>>> x1 = as_strided(
|
|
1402
|
+
... x, strides=(36674, 61119, 85569), shape=(1049, 1049, 1049))
|
|
1403
|
+
>>> x2 = as_strided(
|
|
1404
|
+
... x[64023025:], strides=(12223, 12224, 1), shape=(1049, 1049, 1))
|
|
1405
|
+
>>> np.shares_memory(x1, x2, max_work=1000)
|
|
1406
|
+
Traceback (most recent call last):
|
|
1407
|
+
...
|
|
1408
|
+
numpy.exceptions.TooHardError: Exceeded max_work
|
|
1409
|
+
|
|
1410
|
+
Running ``np.shares_memory(x1, x2)`` without `max_work` set takes
|
|
1411
|
+
around 1 minute for this case. It is possible to find problems
|
|
1412
|
+
that take still significantly longer.
|
|
1413
|
+
|
|
1414
|
+
"""
|
|
1415
|
+
return (a, b)
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.may_share_memory)
|
|
1419
|
+
def may_share_memory(a, b, max_work=None):
|
|
1420
|
+
"""
|
|
1421
|
+
may_share_memory(a, b, /, max_work=None)
|
|
1422
|
+
|
|
1423
|
+
Determine if two arrays might share memory
|
|
1424
|
+
|
|
1425
|
+
A return of True does not necessarily mean that the two arrays
|
|
1426
|
+
share any element. It just means that they *might*.
|
|
1427
|
+
|
|
1428
|
+
Only the memory bounds of a and b are checked by default.
|
|
1429
|
+
|
|
1430
|
+
Parameters
|
|
1431
|
+
----------
|
|
1432
|
+
a, b : ndarray
|
|
1433
|
+
Input arrays
|
|
1434
|
+
max_work : int, optional
|
|
1435
|
+
Effort to spend on solving the overlap problem. See
|
|
1436
|
+
`shares_memory` for details. Default for ``may_share_memory``
|
|
1437
|
+
is to do a bounds check.
|
|
1438
|
+
|
|
1439
|
+
Returns
|
|
1440
|
+
-------
|
|
1441
|
+
out : bool
|
|
1442
|
+
|
|
1443
|
+
See Also
|
|
1444
|
+
--------
|
|
1445
|
+
shares_memory
|
|
1446
|
+
|
|
1447
|
+
Examples
|
|
1448
|
+
--------
|
|
1449
|
+
>>> import numpy as np
|
|
1450
|
+
>>> np.may_share_memory(np.array([1,2]), np.array([5,8,9]))
|
|
1451
|
+
False
|
|
1452
|
+
>>> x = np.zeros([3, 4])
|
|
1453
|
+
>>> np.may_share_memory(x[:,0], x[:,1])
|
|
1454
|
+
True
|
|
1455
|
+
|
|
1456
|
+
"""
|
|
1457
|
+
return (a, b)
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.is_busday)
|
|
1461
|
+
def is_busday(dates, weekmask=None, holidays=None, busdaycal=None, out=None):
|
|
1462
|
+
"""
|
|
1463
|
+
is_busday(
|
|
1464
|
+
dates,
|
|
1465
|
+
weekmask='1111100',
|
|
1466
|
+
holidays=None,
|
|
1467
|
+
busdaycal=None,
|
|
1468
|
+
out=None
|
|
1469
|
+
)
|
|
1470
|
+
|
|
1471
|
+
Calculates which of the given dates are valid days, and which are not.
|
|
1472
|
+
|
|
1473
|
+
Parameters
|
|
1474
|
+
----------
|
|
1475
|
+
dates : array_like of datetime64[D]
|
|
1476
|
+
The array of dates to process.
|
|
1477
|
+
weekmask : str or array_like of bool, optional
|
|
1478
|
+
A seven-element array indicating which of Monday through Sunday are
|
|
1479
|
+
valid days. May be specified as a length-seven list or array, like
|
|
1480
|
+
[1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
|
|
1481
|
+
like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
|
|
1482
|
+
weekdays, optionally separated by white space. Valid abbreviations
|
|
1483
|
+
are: Mon Tue Wed Thu Fri Sat Sun
|
|
1484
|
+
holidays : array_like of datetime64[D], optional
|
|
1485
|
+
An array of dates to consider as invalid dates. They may be
|
|
1486
|
+
specified in any order, and NaT (not-a-time) dates are ignored.
|
|
1487
|
+
This list is saved in a normalized form that is suited for
|
|
1488
|
+
fast calculations of valid days.
|
|
1489
|
+
busdaycal : busdaycalendar, optional
|
|
1490
|
+
A `busdaycalendar` object which specifies the valid days. If this
|
|
1491
|
+
parameter is provided, neither weekmask nor holidays may be
|
|
1492
|
+
provided.
|
|
1493
|
+
out : array of bool, optional
|
|
1494
|
+
If provided, this array is filled with the result.
|
|
1495
|
+
|
|
1496
|
+
Returns
|
|
1497
|
+
-------
|
|
1498
|
+
out : array of bool
|
|
1499
|
+
An array with the same shape as ``dates``, containing True for
|
|
1500
|
+
each valid day, and False for each invalid day.
|
|
1501
|
+
|
|
1502
|
+
See Also
|
|
1503
|
+
--------
|
|
1504
|
+
busdaycalendar : An object that specifies a custom set of valid days.
|
|
1505
|
+
busday_offset : Applies an offset counted in valid days.
|
|
1506
|
+
busday_count : Counts how many valid days are in a half-open date range.
|
|
1507
|
+
|
|
1508
|
+
Examples
|
|
1509
|
+
--------
|
|
1510
|
+
>>> import numpy as np
|
|
1511
|
+
>>> # The weekdays are Friday, Saturday, and Monday
|
|
1512
|
+
... np.is_busday(['2011-07-01', '2011-07-02', '2011-07-18'],
|
|
1513
|
+
... holidays=['2011-07-01', '2011-07-04', '2011-07-17'])
|
|
1514
|
+
array([False, False, True])
|
|
1515
|
+
"""
|
|
1516
|
+
return (dates, weekmask, holidays, out)
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.busday_offset)
|
|
1520
|
+
def busday_offset(dates, offsets, roll=None, weekmask=None, holidays=None,
|
|
1521
|
+
busdaycal=None, out=None):
|
|
1522
|
+
"""
|
|
1523
|
+
busday_offset(
|
|
1524
|
+
dates,
|
|
1525
|
+
offsets,
|
|
1526
|
+
roll='raise',
|
|
1527
|
+
weekmask='1111100',
|
|
1528
|
+
holidays=None,
|
|
1529
|
+
busdaycal=None,
|
|
1530
|
+
out=None
|
|
1531
|
+
)
|
|
1532
|
+
|
|
1533
|
+
First adjusts the date to fall on a valid day according to
|
|
1534
|
+
the ``roll`` rule, then applies offsets to the given dates
|
|
1535
|
+
counted in valid days.
|
|
1536
|
+
|
|
1537
|
+
Parameters
|
|
1538
|
+
----------
|
|
1539
|
+
dates : array_like of datetime64[D]
|
|
1540
|
+
The array of dates to process.
|
|
1541
|
+
offsets : array_like of int
|
|
1542
|
+
The array of offsets, which is broadcast with ``dates``.
|
|
1543
|
+
roll : {'raise', 'nat', 'forward', 'following', 'backward', 'preceding', \
|
|
1544
|
+
'modifiedfollowing', 'modifiedpreceding'}, optional
|
|
1545
|
+
How to treat dates that do not fall on a valid day. The default
|
|
1546
|
+
is 'raise'.
|
|
1547
|
+
|
|
1548
|
+
* 'raise' means to raise an exception for an invalid day.
|
|
1549
|
+
* 'nat' means to return a NaT (not-a-time) for an invalid day.
|
|
1550
|
+
* 'forward' and 'following' mean to take the first valid day
|
|
1551
|
+
later in time.
|
|
1552
|
+
* 'backward' and 'preceding' mean to take the first valid day
|
|
1553
|
+
earlier in time.
|
|
1554
|
+
* 'modifiedfollowing' means to take the first valid day
|
|
1555
|
+
later in time unless it is across a Month boundary, in which
|
|
1556
|
+
case to take the first valid day earlier in time.
|
|
1557
|
+
* 'modifiedpreceding' means to take the first valid day
|
|
1558
|
+
earlier in time unless it is across a Month boundary, in which
|
|
1559
|
+
case to take the first valid day later in time.
|
|
1560
|
+
weekmask : str or array_like of bool, optional
|
|
1561
|
+
A seven-element array indicating which of Monday through Sunday are
|
|
1562
|
+
valid days. May be specified as a length-seven list or array, like
|
|
1563
|
+
[1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
|
|
1564
|
+
like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
|
|
1565
|
+
weekdays, optionally separated by white space. Valid abbreviations
|
|
1566
|
+
are: Mon Tue Wed Thu Fri Sat Sun
|
|
1567
|
+
holidays : array_like of datetime64[D], optional
|
|
1568
|
+
An array of dates to consider as invalid dates. They may be
|
|
1569
|
+
specified in any order, and NaT (not-a-time) dates are ignored.
|
|
1570
|
+
This list is saved in a normalized form that is suited for
|
|
1571
|
+
fast calculations of valid days.
|
|
1572
|
+
busdaycal : busdaycalendar, optional
|
|
1573
|
+
A `busdaycalendar` object which specifies the valid days. If this
|
|
1574
|
+
parameter is provided, neither weekmask nor holidays may be
|
|
1575
|
+
provided.
|
|
1576
|
+
out : array of datetime64[D], optional
|
|
1577
|
+
If provided, this array is filled with the result.
|
|
1578
|
+
|
|
1579
|
+
Returns
|
|
1580
|
+
-------
|
|
1581
|
+
out : array of datetime64[D]
|
|
1582
|
+
An array with a shape from broadcasting ``dates`` and ``offsets``
|
|
1583
|
+
together, containing the dates with offsets applied.
|
|
1584
|
+
|
|
1585
|
+
See Also
|
|
1586
|
+
--------
|
|
1587
|
+
busdaycalendar : An object that specifies a custom set of valid days.
|
|
1588
|
+
is_busday : Returns a boolean array indicating valid days.
|
|
1589
|
+
busday_count : Counts how many valid days are in a half-open date range.
|
|
1590
|
+
|
|
1591
|
+
Examples
|
|
1592
|
+
--------
|
|
1593
|
+
>>> import numpy as np
|
|
1594
|
+
>>> # First business day in October 2011 (not accounting for holidays)
|
|
1595
|
+
... np.busday_offset('2011-10', 0, roll='forward')
|
|
1596
|
+
np.datetime64('2011-10-03')
|
|
1597
|
+
>>> # Last business day in February 2012 (not accounting for holidays)
|
|
1598
|
+
... np.busday_offset('2012-03', -1, roll='forward')
|
|
1599
|
+
np.datetime64('2012-02-29')
|
|
1600
|
+
>>> # Third Wednesday in January 2011
|
|
1601
|
+
... np.busday_offset('2011-01', 2, roll='forward', weekmask='Wed')
|
|
1602
|
+
np.datetime64('2011-01-19')
|
|
1603
|
+
>>> # 2012 Mother's Day in Canada and the U.S.
|
|
1604
|
+
... np.busday_offset('2012-05', 1, roll='forward', weekmask='Sun')
|
|
1605
|
+
np.datetime64('2012-05-13')
|
|
1606
|
+
|
|
1607
|
+
>>> # First business day on or after a date
|
|
1608
|
+
... np.busday_offset('2011-03-20', 0, roll='forward')
|
|
1609
|
+
np.datetime64('2011-03-21')
|
|
1610
|
+
>>> np.busday_offset('2011-03-22', 0, roll='forward')
|
|
1611
|
+
np.datetime64('2011-03-22')
|
|
1612
|
+
>>> # First business day after a date
|
|
1613
|
+
... np.busday_offset('2011-03-20', 1, roll='backward')
|
|
1614
|
+
np.datetime64('2011-03-21')
|
|
1615
|
+
>>> np.busday_offset('2011-03-22', 1, roll='backward')
|
|
1616
|
+
np.datetime64('2011-03-23')
|
|
1617
|
+
"""
|
|
1618
|
+
return (dates, offsets, weekmask, holidays, out)
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
@array_function_from_c_func_and_dispatcher(_multiarray_umath.busday_count)
|
|
1622
|
+
def busday_count(begindates, enddates, weekmask=None, holidays=None,
|
|
1623
|
+
busdaycal=None, out=None):
|
|
1624
|
+
"""
|
|
1625
|
+
busday_count(
|
|
1626
|
+
begindates,
|
|
1627
|
+
enddates,
|
|
1628
|
+
weekmask='1111100',
|
|
1629
|
+
holidays=[],
|
|
1630
|
+
busdaycal=None,
|
|
1631
|
+
out=None
|
|
1632
|
+
)
|
|
1633
|
+
|
|
1634
|
+
Counts the number of valid days between `begindates` and
|
|
1635
|
+
`enddates`, not including the day of `enddates`.
|
|
1636
|
+
|
|
1637
|
+
If ``enddates`` specifies a date value that is earlier than the
|
|
1638
|
+
corresponding ``begindates`` date value, the count will be negative.
|
|
1639
|
+
|
|
1640
|
+
Parameters
|
|
1641
|
+
----------
|
|
1642
|
+
begindates : array_like of datetime64[D]
|
|
1643
|
+
The array of the first dates for counting.
|
|
1644
|
+
enddates : array_like of datetime64[D]
|
|
1645
|
+
The array of the end dates for counting, which are excluded
|
|
1646
|
+
from the count themselves.
|
|
1647
|
+
weekmask : str or array_like of bool, optional
|
|
1648
|
+
A seven-element array indicating which of Monday through Sunday are
|
|
1649
|
+
valid days. May be specified as a length-seven list or array, like
|
|
1650
|
+
[1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
|
|
1651
|
+
like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
|
|
1652
|
+
weekdays, optionally separated by white space. Valid abbreviations
|
|
1653
|
+
are: Mon Tue Wed Thu Fri Sat Sun
|
|
1654
|
+
holidays : array_like of datetime64[D], optional
|
|
1655
|
+
An array of dates to consider as invalid dates. They may be
|
|
1656
|
+
specified in any order, and NaT (not-a-time) dates are ignored.
|
|
1657
|
+
This list is saved in a normalized form that is suited for
|
|
1658
|
+
fast calculations of valid days.
|
|
1659
|
+
busdaycal : busdaycalendar, optional
|
|
1660
|
+
A `busdaycalendar` object which specifies the valid days. If this
|
|
1661
|
+
parameter is provided, neither weekmask nor holidays may be
|
|
1662
|
+
provided.
|
|
1663
|
+
out : array of int, optional
|
|
1664
|
+
If provided, this array is filled with the result.
|
|
1665
|
+
|
|
1666
|
+
Returns
|
|
1667
|
+
-------
|
|
1668
|
+
out : array of int
|
|
1669
|
+
An array with a shape from broadcasting ``begindates`` and ``enddates``
|
|
1670
|
+
together, containing the number of valid days between
|
|
1671
|
+
the begin and end dates.
|
|
1672
|
+
|
|
1673
|
+
See Also
|
|
1674
|
+
--------
|
|
1675
|
+
busdaycalendar : An object that specifies a custom set of valid days.
|
|
1676
|
+
is_busday : Returns a boolean array indicating valid days.
|
|
1677
|
+
busday_offset : Applies an offset counted in valid days.
|
|
1678
|
+
|
|
1679
|
+
Examples
|
|
1680
|
+
--------
|
|
1681
|
+
>>> import numpy as np
|
|
1682
|
+
>>> # Number of weekdays in January 2011
|
|
1683
|
+
... np.busday_count('2011-01', '2011-02')
|
|
1684
|
+
21
|
|
1685
|
+
>>> # Number of weekdays in 2011
|
|
1686
|
+
>>> np.busday_count('2011', '2012')
|
|
1687
|
+
260
|
|
1688
|
+
>>> # Number of Saturdays in 2011
|
|
1689
|
+
... np.busday_count('2011', '2012', weekmask='Sat')
|
|
1690
|
+
53
|
|
1691
|
+
"""
|
|
1692
|
+
return (begindates, enddates, weekmask, holidays, out)
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
@array_function_from_c_func_and_dispatcher(
|
|
1696
|
+
_multiarray_umath.datetime_as_string)
|
|
1697
|
+
def datetime_as_string(arr, unit=None, timezone=None, casting=None):
|
|
1698
|
+
"""
|
|
1699
|
+
datetime_as_string(arr, unit=None, timezone='naive', casting='same_kind')
|
|
1700
|
+
|
|
1701
|
+
Convert an array of datetimes into an array of strings.
|
|
1702
|
+
|
|
1703
|
+
Parameters
|
|
1704
|
+
----------
|
|
1705
|
+
arr : array_like of datetime64
|
|
1706
|
+
The array of UTC timestamps to format.
|
|
1707
|
+
unit : str
|
|
1708
|
+
One of None, 'auto', or
|
|
1709
|
+
a :ref:`datetime unit <arrays.dtypes.dateunits>`.
|
|
1710
|
+
timezone : {'naive', 'UTC', 'local'} or tzinfo
|
|
1711
|
+
Timezone information to use when displaying the datetime. If 'UTC',
|
|
1712
|
+
end with a Z to indicate UTC time. If 'local', convert to the local
|
|
1713
|
+
timezone first, and suffix with a +-#### timezone offset. If a tzinfo
|
|
1714
|
+
object, then do as with 'local', but use the specified timezone.
|
|
1715
|
+
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}
|
|
1716
|
+
Casting to allow when changing between datetime units.
|
|
1717
|
+
|
|
1718
|
+
Returns
|
|
1719
|
+
-------
|
|
1720
|
+
str_arr : ndarray
|
|
1721
|
+
An array of strings the same shape as `arr`.
|
|
1722
|
+
|
|
1723
|
+
Examples
|
|
1724
|
+
--------
|
|
1725
|
+
>>> import numpy as np
|
|
1726
|
+
>>> import pytz
|
|
1727
|
+
>>> d = np.arange('2002-10-27T04:30', 4*60, 60, dtype='M8[m]')
|
|
1728
|
+
>>> d
|
|
1729
|
+
array(['2002-10-27T04:30', '2002-10-27T05:30', '2002-10-27T06:30',
|
|
1730
|
+
'2002-10-27T07:30'], dtype='datetime64[m]')
|
|
1731
|
+
|
|
1732
|
+
Setting the timezone to UTC shows the same information, but with a Z suffix
|
|
1733
|
+
|
|
1734
|
+
>>> np.datetime_as_string(d, timezone='UTC')
|
|
1735
|
+
array(['2002-10-27T04:30Z', '2002-10-27T05:30Z', '2002-10-27T06:30Z',
|
|
1736
|
+
'2002-10-27T07:30Z'], dtype='<U35')
|
|
1737
|
+
|
|
1738
|
+
Note that we picked datetimes that cross a DST boundary. Passing in a
|
|
1739
|
+
``pytz`` timezone object will print the appropriate offset
|
|
1740
|
+
|
|
1741
|
+
>>> np.datetime_as_string(d, timezone=pytz.timezone('US/Eastern'))
|
|
1742
|
+
array(['2002-10-27T00:30-0400', '2002-10-27T01:30-0400',
|
|
1743
|
+
'2002-10-27T01:30-0500', '2002-10-27T02:30-0500'], dtype='<U39')
|
|
1744
|
+
|
|
1745
|
+
Passing in a unit will change the precision
|
|
1746
|
+
|
|
1747
|
+
>>> np.datetime_as_string(d, unit='h')
|
|
1748
|
+
array(['2002-10-27T04', '2002-10-27T05', '2002-10-27T06', '2002-10-27T07'],
|
|
1749
|
+
dtype='<U32')
|
|
1750
|
+
>>> np.datetime_as_string(d, unit='s')
|
|
1751
|
+
array(['2002-10-27T04:30:00', '2002-10-27T05:30:00', '2002-10-27T06:30:00',
|
|
1752
|
+
'2002-10-27T07:30:00'], dtype='<U38')
|
|
1753
|
+
|
|
1754
|
+
'casting' can be used to specify whether precision can be changed
|
|
1755
|
+
|
|
1756
|
+
>>> np.datetime_as_string(d, unit='h', casting='safe')
|
|
1757
|
+
Traceback (most recent call last):
|
|
1758
|
+
...
|
|
1759
|
+
TypeError: Cannot create a datetime string as units 'h' from a NumPy
|
|
1760
|
+
datetime with units 'm' according to the rule 'safe'
|
|
1761
|
+
"""
|
|
1762
|
+
return (arr,)
|