maxframe 0.1.0b5__cp38-cp38-macosx_11_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 maxframe might be problematic. Click here for more details.
- maxframe/__init__.py +32 -0
- maxframe/_utils.cpython-38-darwin.so +0 -0
- maxframe/_utils.pxd +33 -0
- maxframe/_utils.pyx +547 -0
- maxframe/codegen.py +528 -0
- maxframe/config/__init__.py +15 -0
- maxframe/config/config.py +443 -0
- maxframe/config/tests/__init__.py +13 -0
- maxframe/config/tests/test_config.py +103 -0
- maxframe/config/tests/test_validators.py +34 -0
- maxframe/config/validators.py +57 -0
- maxframe/conftest.py +139 -0
- maxframe/core/__init__.py +65 -0
- maxframe/core/base.py +156 -0
- maxframe/core/entity/__init__.py +44 -0
- maxframe/core/entity/chunks.py +68 -0
- maxframe/core/entity/core.py +152 -0
- maxframe/core/entity/executable.py +337 -0
- maxframe/core/entity/fuse.py +73 -0
- maxframe/core/entity/objects.py +100 -0
- maxframe/core/entity/output_types.py +90 -0
- maxframe/core/entity/tileables.py +438 -0
- maxframe/core/entity/utils.py +24 -0
- maxframe/core/graph/__init__.py +17 -0
- maxframe/core/graph/builder/__init__.py +16 -0
- maxframe/core/graph/builder/base.py +86 -0
- maxframe/core/graph/builder/chunk.py +430 -0
- maxframe/core/graph/builder/tileable.py +34 -0
- maxframe/core/graph/builder/utils.py +41 -0
- maxframe/core/graph/core.cpython-38-darwin.so +0 -0
- maxframe/core/graph/core.pyx +467 -0
- maxframe/core/graph/entity.py +171 -0
- maxframe/core/graph/tests/__init__.py +13 -0
- maxframe/core/graph/tests/test_graph.py +205 -0
- maxframe/core/mode.py +96 -0
- maxframe/core/operator/__init__.py +34 -0
- maxframe/core/operator/base.py +450 -0
- maxframe/core/operator/core.py +276 -0
- maxframe/core/operator/fetch.py +53 -0
- maxframe/core/operator/fuse.py +29 -0
- maxframe/core/operator/objects.py +72 -0
- maxframe/core/operator/shuffle.py +111 -0
- maxframe/core/operator/tests/__init__.py +13 -0
- maxframe/core/operator/tests/test_core.py +64 -0
- maxframe/core/tests/__init__.py +13 -0
- maxframe/core/tests/test_mode.py +75 -0
- maxframe/dataframe/__init__.py +81 -0
- maxframe/dataframe/arithmetic/__init__.py +359 -0
- maxframe/dataframe/arithmetic/abs.py +33 -0
- maxframe/dataframe/arithmetic/add.py +60 -0
- maxframe/dataframe/arithmetic/arccos.py +28 -0
- maxframe/dataframe/arithmetic/arccosh.py +28 -0
- maxframe/dataframe/arithmetic/arcsin.py +28 -0
- maxframe/dataframe/arithmetic/arcsinh.py +28 -0
- maxframe/dataframe/arithmetic/arctan.py +28 -0
- maxframe/dataframe/arithmetic/arctanh.py +28 -0
- maxframe/dataframe/arithmetic/around.py +152 -0
- maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
- maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
- maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
- maxframe/dataframe/arithmetic/ceil.py +28 -0
- maxframe/dataframe/arithmetic/core.py +342 -0
- maxframe/dataframe/arithmetic/cos.py +28 -0
- maxframe/dataframe/arithmetic/cosh.py +28 -0
- maxframe/dataframe/arithmetic/degrees.py +28 -0
- maxframe/dataframe/arithmetic/docstring.py +442 -0
- maxframe/dataframe/arithmetic/equal.py +56 -0
- maxframe/dataframe/arithmetic/exp.py +28 -0
- maxframe/dataframe/arithmetic/exp2.py +28 -0
- maxframe/dataframe/arithmetic/expm1.py +28 -0
- maxframe/dataframe/arithmetic/floor.py +28 -0
- maxframe/dataframe/arithmetic/floordiv.py +64 -0
- maxframe/dataframe/arithmetic/greater.py +57 -0
- maxframe/dataframe/arithmetic/greater_equal.py +57 -0
- maxframe/dataframe/arithmetic/invert.py +33 -0
- maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
- maxframe/dataframe/arithmetic/less.py +57 -0
- maxframe/dataframe/arithmetic/less_equal.py +57 -0
- maxframe/dataframe/arithmetic/log.py +28 -0
- maxframe/dataframe/arithmetic/log10.py +28 -0
- maxframe/dataframe/arithmetic/log2.py +28 -0
- maxframe/dataframe/arithmetic/mod.py +60 -0
- maxframe/dataframe/arithmetic/multiply.py +60 -0
- maxframe/dataframe/arithmetic/negative.py +33 -0
- maxframe/dataframe/arithmetic/not_equal.py +56 -0
- maxframe/dataframe/arithmetic/power.py +68 -0
- maxframe/dataframe/arithmetic/radians.py +28 -0
- maxframe/dataframe/arithmetic/sin.py +28 -0
- maxframe/dataframe/arithmetic/sinh.py +28 -0
- maxframe/dataframe/arithmetic/sqrt.py +28 -0
- maxframe/dataframe/arithmetic/subtract.py +64 -0
- maxframe/dataframe/arithmetic/tan.py +28 -0
- maxframe/dataframe/arithmetic/tanh.py +28 -0
- maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
- maxframe/dataframe/arithmetic/truediv.py +64 -0
- maxframe/dataframe/arithmetic/trunc.py +28 -0
- maxframe/dataframe/arrays.py +864 -0
- maxframe/dataframe/core.py +2417 -0
- maxframe/dataframe/datasource/__init__.py +15 -0
- maxframe/dataframe/datasource/core.py +81 -0
- maxframe/dataframe/datasource/dataframe.py +59 -0
- maxframe/dataframe/datasource/date_range.py +504 -0
- maxframe/dataframe/datasource/from_index.py +54 -0
- maxframe/dataframe/datasource/from_records.py +107 -0
- maxframe/dataframe/datasource/from_tensor.py +419 -0
- maxframe/dataframe/datasource/index.py +117 -0
- maxframe/dataframe/datasource/read_csv.py +528 -0
- maxframe/dataframe/datasource/read_odps_query.py +299 -0
- maxframe/dataframe/datasource/read_odps_table.py +253 -0
- maxframe/dataframe/datasource/read_parquet.py +421 -0
- maxframe/dataframe/datasource/series.py +55 -0
- maxframe/dataframe/datasource/tests/__init__.py +13 -0
- maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
- maxframe/dataframe/datastore/__init__.py +26 -0
- maxframe/dataframe/datastore/core.py +19 -0
- maxframe/dataframe/datastore/to_csv.py +227 -0
- maxframe/dataframe/datastore/to_odps.py +162 -0
- maxframe/dataframe/extensions/__init__.py +41 -0
- maxframe/dataframe/extensions/accessor.py +50 -0
- maxframe/dataframe/extensions/reshuffle.py +83 -0
- maxframe/dataframe/extensions/tests/__init__.py +13 -0
- maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
- maxframe/dataframe/fetch/__init__.py +15 -0
- maxframe/dataframe/fetch/core.py +86 -0
- maxframe/dataframe/groupby/__init__.py +82 -0
- maxframe/dataframe/groupby/aggregation.py +350 -0
- maxframe/dataframe/groupby/apply.py +251 -0
- maxframe/dataframe/groupby/core.py +179 -0
- maxframe/dataframe/groupby/cum.py +124 -0
- maxframe/dataframe/groupby/fill.py +141 -0
- maxframe/dataframe/groupby/getitem.py +92 -0
- maxframe/dataframe/groupby/head.py +105 -0
- maxframe/dataframe/groupby/sample.py +214 -0
- maxframe/dataframe/groupby/tests/__init__.py +13 -0
- maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
- maxframe/dataframe/groupby/transform.py +255 -0
- maxframe/dataframe/indexing/__init__.py +84 -0
- maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
- maxframe/dataframe/indexing/align.py +349 -0
- maxframe/dataframe/indexing/at.py +83 -0
- maxframe/dataframe/indexing/getitem.py +204 -0
- maxframe/dataframe/indexing/iat.py +37 -0
- maxframe/dataframe/indexing/iloc.py +566 -0
- maxframe/dataframe/indexing/insert.py +86 -0
- maxframe/dataframe/indexing/loc.py +411 -0
- maxframe/dataframe/indexing/reindex.py +526 -0
- maxframe/dataframe/indexing/rename.py +462 -0
- maxframe/dataframe/indexing/rename_axis.py +209 -0
- maxframe/dataframe/indexing/reset_index.py +402 -0
- maxframe/dataframe/indexing/sample.py +221 -0
- maxframe/dataframe/indexing/set_axis.py +194 -0
- maxframe/dataframe/indexing/set_index.py +61 -0
- maxframe/dataframe/indexing/setitem.py +130 -0
- maxframe/dataframe/indexing/tests/__init__.py +13 -0
- maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
- maxframe/dataframe/indexing/where.py +308 -0
- maxframe/dataframe/initializer.py +288 -0
- maxframe/dataframe/merge/__init__.py +32 -0
- maxframe/dataframe/merge/append.py +121 -0
- maxframe/dataframe/merge/concat.py +325 -0
- maxframe/dataframe/merge/merge.py +593 -0
- maxframe/dataframe/merge/tests/__init__.py +13 -0
- maxframe/dataframe/merge/tests/test_merge.py +215 -0
- maxframe/dataframe/misc/__init__.py +134 -0
- maxframe/dataframe/misc/_duplicate.py +46 -0
- maxframe/dataframe/misc/accessor.py +276 -0
- maxframe/dataframe/misc/apply.py +692 -0
- maxframe/dataframe/misc/astype.py +236 -0
- maxframe/dataframe/misc/case_when.py +141 -0
- maxframe/dataframe/misc/check_monotonic.py +84 -0
- maxframe/dataframe/misc/cut.py +383 -0
- maxframe/dataframe/misc/datetimes.py +79 -0
- maxframe/dataframe/misc/describe.py +108 -0
- maxframe/dataframe/misc/diff.py +210 -0
- maxframe/dataframe/misc/drop.py +440 -0
- maxframe/dataframe/misc/drop_duplicates.py +248 -0
- maxframe/dataframe/misc/duplicated.py +292 -0
- maxframe/dataframe/misc/eval.py +728 -0
- maxframe/dataframe/misc/explode.py +171 -0
- maxframe/dataframe/misc/get_dummies.py +208 -0
- maxframe/dataframe/misc/isin.py +217 -0
- maxframe/dataframe/misc/map.py +236 -0
- maxframe/dataframe/misc/melt.py +162 -0
- maxframe/dataframe/misc/memory_usage.py +248 -0
- maxframe/dataframe/misc/pct_change.py +150 -0
- maxframe/dataframe/misc/pivot_table.py +262 -0
- maxframe/dataframe/misc/qcut.py +104 -0
- maxframe/dataframe/misc/select_dtypes.py +104 -0
- maxframe/dataframe/misc/shift.py +256 -0
- maxframe/dataframe/misc/stack.py +238 -0
- maxframe/dataframe/misc/string_.py +221 -0
- maxframe/dataframe/misc/tests/__init__.py +13 -0
- maxframe/dataframe/misc/tests/test_misc.py +468 -0
- maxframe/dataframe/misc/to_numeric.py +178 -0
- maxframe/dataframe/misc/transform.py +361 -0
- maxframe/dataframe/misc/transpose.py +136 -0
- maxframe/dataframe/misc/value_counts.py +182 -0
- maxframe/dataframe/missing/__init__.py +53 -0
- maxframe/dataframe/missing/checkna.py +223 -0
- maxframe/dataframe/missing/dropna.py +280 -0
- maxframe/dataframe/missing/fillna.py +275 -0
- maxframe/dataframe/missing/replace.py +439 -0
- maxframe/dataframe/missing/tests/__init__.py +13 -0
- maxframe/dataframe/missing/tests/test_missing.py +89 -0
- maxframe/dataframe/operators.py +273 -0
- maxframe/dataframe/plotting/__init__.py +40 -0
- maxframe/dataframe/plotting/core.py +78 -0
- maxframe/dataframe/plotting/tests/__init__.py +13 -0
- maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
- maxframe/dataframe/reduction/__init__.py +107 -0
- maxframe/dataframe/reduction/aggregation.py +344 -0
- maxframe/dataframe/reduction/all.py +78 -0
- maxframe/dataframe/reduction/any.py +78 -0
- maxframe/dataframe/reduction/core.py +837 -0
- maxframe/dataframe/reduction/count.py +59 -0
- maxframe/dataframe/reduction/cummax.py +30 -0
- maxframe/dataframe/reduction/cummin.py +30 -0
- maxframe/dataframe/reduction/cumprod.py +30 -0
- maxframe/dataframe/reduction/cumsum.py +30 -0
- maxframe/dataframe/reduction/custom_reduction.py +42 -0
- maxframe/dataframe/reduction/kurtosis.py +104 -0
- maxframe/dataframe/reduction/max.py +65 -0
- maxframe/dataframe/reduction/mean.py +61 -0
- maxframe/dataframe/reduction/min.py +65 -0
- maxframe/dataframe/reduction/nunique.py +141 -0
- maxframe/dataframe/reduction/prod.py +76 -0
- maxframe/dataframe/reduction/reduction_size.py +36 -0
- maxframe/dataframe/reduction/sem.py +69 -0
- maxframe/dataframe/reduction/skew.py +89 -0
- maxframe/dataframe/reduction/std.py +53 -0
- maxframe/dataframe/reduction/str_concat.py +48 -0
- maxframe/dataframe/reduction/sum.py +77 -0
- maxframe/dataframe/reduction/tests/__init__.py +13 -0
- maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
- maxframe/dataframe/reduction/unique.py +90 -0
- maxframe/dataframe/reduction/var.py +72 -0
- maxframe/dataframe/sort/__init__.py +34 -0
- maxframe/dataframe/sort/core.py +36 -0
- maxframe/dataframe/sort/sort_index.py +153 -0
- maxframe/dataframe/sort/sort_values.py +311 -0
- maxframe/dataframe/sort/tests/__init__.py +13 -0
- maxframe/dataframe/sort/tests/test_sort.py +81 -0
- maxframe/dataframe/statistics/__init__.py +33 -0
- maxframe/dataframe/statistics/corr.py +280 -0
- maxframe/dataframe/statistics/quantile.py +341 -0
- maxframe/dataframe/statistics/tests/__init__.py +13 -0
- maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
- maxframe/dataframe/tests/__init__.py +13 -0
- maxframe/dataframe/tests/test_initializer.py +29 -0
- maxframe/dataframe/tseries/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
- maxframe/dataframe/tseries/to_datetime.py +297 -0
- maxframe/dataframe/ufunc/__init__.py +27 -0
- maxframe/dataframe/ufunc/tensor.py +54 -0
- maxframe/dataframe/ufunc/ufunc.py +52 -0
- maxframe/dataframe/utils.py +1267 -0
- maxframe/dataframe/window/__init__.py +29 -0
- maxframe/dataframe/window/aggregation.py +96 -0
- maxframe/dataframe/window/core.py +69 -0
- maxframe/dataframe/window/ewm.py +249 -0
- maxframe/dataframe/window/expanding.py +147 -0
- maxframe/dataframe/window/rolling.py +376 -0
- maxframe/dataframe/window/tests/__init__.py +13 -0
- maxframe/dataframe/window/tests/test_ewm.py +70 -0
- maxframe/dataframe/window/tests/test_expanding.py +66 -0
- maxframe/dataframe/window/tests/test_rolling.py +57 -0
- maxframe/env.py +33 -0
- maxframe/errors.py +21 -0
- maxframe/extension.py +81 -0
- maxframe/learn/__init__.py +17 -0
- maxframe/learn/contrib/__init__.py +17 -0
- maxframe/learn/contrib/pytorch/__init__.py +16 -0
- maxframe/learn/contrib/pytorch/run_function.py +110 -0
- maxframe/learn/contrib/pytorch/run_script.py +102 -0
- maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
- maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
- maxframe/learn/contrib/utils.py +52 -0
- maxframe/learn/contrib/xgboost/__init__.py +26 -0
- maxframe/learn/contrib/xgboost/classifier.py +86 -0
- maxframe/learn/contrib/xgboost/core.py +156 -0
- maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
- maxframe/learn/contrib/xgboost/predict.py +138 -0
- maxframe/learn/contrib/xgboost/regressor.py +78 -0
- maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
- maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
- maxframe/learn/contrib/xgboost/train.py +121 -0
- maxframe/learn/utils/__init__.py +15 -0
- maxframe/learn/utils/core.py +29 -0
- maxframe/lib/__init__.py +15 -0
- maxframe/lib/aio/__init__.py +27 -0
- maxframe/lib/aio/_runners.py +162 -0
- maxframe/lib/aio/_threads.py +35 -0
- maxframe/lib/aio/base.py +82 -0
- maxframe/lib/aio/file.py +85 -0
- maxframe/lib/aio/isolation.py +100 -0
- maxframe/lib/aio/lru.py +242 -0
- maxframe/lib/aio/parallelism.py +37 -0
- maxframe/lib/aio/tests/__init__.py +13 -0
- maxframe/lib/aio/tests/test_aio_file.py +55 -0
- maxframe/lib/compression.py +55 -0
- maxframe/lib/cython/__init__.py +13 -0
- maxframe/lib/cython/libcpp.pxd +30 -0
- maxframe/lib/filesystem/__init__.py +21 -0
- maxframe/lib/filesystem/_glob.py +173 -0
- maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
- maxframe/lib/filesystem/_oss_lib/common.py +198 -0
- maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
- maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
- maxframe/lib/filesystem/arrow.py +236 -0
- maxframe/lib/filesystem/base.py +263 -0
- maxframe/lib/filesystem/core.py +95 -0
- maxframe/lib/filesystem/fsmap.py +164 -0
- maxframe/lib/filesystem/hdfs.py +31 -0
- maxframe/lib/filesystem/local.py +112 -0
- maxframe/lib/filesystem/oss.py +157 -0
- maxframe/lib/filesystem/tests/__init__.py +13 -0
- maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
- maxframe/lib/filesystem/tests/test_oss.py +182 -0
- maxframe/lib/functools_compat.py +81 -0
- maxframe/lib/mmh3.cpython-38-darwin.so +0 -0
- maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
- maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
- maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
- maxframe/lib/sparse/__init__.py +861 -0
- maxframe/lib/sparse/array.py +1604 -0
- maxframe/lib/sparse/core.py +92 -0
- maxframe/lib/sparse/matrix.py +241 -0
- maxframe/lib/sparse/tests/__init__.py +15 -0
- maxframe/lib/sparse/tests/test_sparse.py +476 -0
- maxframe/lib/sparse/vector.py +150 -0
- maxframe/lib/tblib/LICENSE +20 -0
- maxframe/lib/tblib/__init__.py +327 -0
- maxframe/lib/tblib/cpython.py +83 -0
- maxframe/lib/tblib/decorators.py +44 -0
- maxframe/lib/tblib/pickling_support.py +90 -0
- maxframe/lib/tests/__init__.py +13 -0
- maxframe/lib/tests/test_wrapped_pickle.py +51 -0
- maxframe/lib/version.py +620 -0
- maxframe/lib/wrapped_pickle.py +139 -0
- maxframe/mixin.py +100 -0
- maxframe/odpsio/__init__.py +21 -0
- maxframe/odpsio/arrow.py +91 -0
- maxframe/odpsio/schema.py +364 -0
- maxframe/odpsio/tableio.py +322 -0
- maxframe/odpsio/tests/__init__.py +13 -0
- maxframe/odpsio/tests/test_arrow.py +88 -0
- maxframe/odpsio/tests/test_schema.py +297 -0
- maxframe/odpsio/tests/test_tableio.py +136 -0
- maxframe/odpsio/tests/test_volumeio.py +90 -0
- maxframe/odpsio/volumeio.py +95 -0
- maxframe/opcodes.py +590 -0
- maxframe/protocol.py +415 -0
- maxframe/remote/__init__.py +18 -0
- maxframe/remote/core.py +210 -0
- maxframe/remote/run_script.py +121 -0
- maxframe/serialization/__init__.py +26 -0
- maxframe/serialization/arrow.py +95 -0
- maxframe/serialization/core.cpython-38-darwin.so +0 -0
- maxframe/serialization/core.pxd +44 -0
- maxframe/serialization/core.pyi +61 -0
- maxframe/serialization/core.pyx +1094 -0
- maxframe/serialization/exception.py +86 -0
- maxframe/serialization/maxframe_objects.py +39 -0
- maxframe/serialization/numpy.py +91 -0
- maxframe/serialization/pandas.py +202 -0
- maxframe/serialization/scipy.py +71 -0
- maxframe/serialization/serializables/__init__.py +55 -0
- maxframe/serialization/serializables/core.py +262 -0
- maxframe/serialization/serializables/field.py +624 -0
- maxframe/serialization/serializables/field_type.py +589 -0
- maxframe/serialization/serializables/tests/__init__.py +13 -0
- maxframe/serialization/serializables/tests/test_field_type.py +121 -0
- maxframe/serialization/serializables/tests/test_serializable.py +250 -0
- maxframe/serialization/tests/__init__.py +13 -0
- maxframe/serialization/tests/test_serial.py +412 -0
- maxframe/session.py +1310 -0
- maxframe/tensor/__init__.py +183 -0
- maxframe/tensor/arithmetic/__init__.py +315 -0
- maxframe/tensor/arithmetic/abs.py +68 -0
- maxframe/tensor/arithmetic/absolute.py +68 -0
- maxframe/tensor/arithmetic/add.py +82 -0
- maxframe/tensor/arithmetic/angle.py +72 -0
- maxframe/tensor/arithmetic/arccos.py +104 -0
- maxframe/tensor/arithmetic/arccosh.py +91 -0
- maxframe/tensor/arithmetic/arcsin.py +94 -0
- maxframe/tensor/arithmetic/arcsinh.py +86 -0
- maxframe/tensor/arithmetic/arctan.py +106 -0
- maxframe/tensor/arithmetic/arctan2.py +128 -0
- maxframe/tensor/arithmetic/arctanh.py +86 -0
- maxframe/tensor/arithmetic/around.py +114 -0
- maxframe/tensor/arithmetic/bitand.py +95 -0
- maxframe/tensor/arithmetic/bitor.py +102 -0
- maxframe/tensor/arithmetic/bitxor.py +95 -0
- maxframe/tensor/arithmetic/cbrt.py +66 -0
- maxframe/tensor/arithmetic/ceil.py +71 -0
- maxframe/tensor/arithmetic/clip.py +165 -0
- maxframe/tensor/arithmetic/conj.py +74 -0
- maxframe/tensor/arithmetic/copysign.py +78 -0
- maxframe/tensor/arithmetic/core.py +544 -0
- maxframe/tensor/arithmetic/cos.py +85 -0
- maxframe/tensor/arithmetic/cosh.py +72 -0
- maxframe/tensor/arithmetic/deg2rad.py +72 -0
- maxframe/tensor/arithmetic/degrees.py +77 -0
- maxframe/tensor/arithmetic/divide.py +114 -0
- maxframe/tensor/arithmetic/equal.py +76 -0
- maxframe/tensor/arithmetic/exp.py +106 -0
- maxframe/tensor/arithmetic/exp2.py +67 -0
- maxframe/tensor/arithmetic/expm1.py +79 -0
- maxframe/tensor/arithmetic/fabs.py +74 -0
- maxframe/tensor/arithmetic/fix.py +69 -0
- maxframe/tensor/arithmetic/float_power.py +103 -0
- maxframe/tensor/arithmetic/floor.py +77 -0
- maxframe/tensor/arithmetic/floordiv.py +94 -0
- maxframe/tensor/arithmetic/fmax.py +105 -0
- maxframe/tensor/arithmetic/fmin.py +106 -0
- maxframe/tensor/arithmetic/fmod.py +99 -0
- maxframe/tensor/arithmetic/frexp.py +92 -0
- maxframe/tensor/arithmetic/greater.py +77 -0
- maxframe/tensor/arithmetic/greater_equal.py +69 -0
- maxframe/tensor/arithmetic/hypot.py +77 -0
- maxframe/tensor/arithmetic/i0.py +89 -0
- maxframe/tensor/arithmetic/imag.py +67 -0
- maxframe/tensor/arithmetic/invert.py +110 -0
- maxframe/tensor/arithmetic/isclose.py +115 -0
- maxframe/tensor/arithmetic/iscomplex.py +64 -0
- maxframe/tensor/arithmetic/isfinite.py +106 -0
- maxframe/tensor/arithmetic/isinf.py +103 -0
- maxframe/tensor/arithmetic/isnan.py +82 -0
- maxframe/tensor/arithmetic/isreal.py +63 -0
- maxframe/tensor/arithmetic/ldexp.py +99 -0
- maxframe/tensor/arithmetic/less.py +69 -0
- maxframe/tensor/arithmetic/less_equal.py +69 -0
- maxframe/tensor/arithmetic/log.py +92 -0
- maxframe/tensor/arithmetic/log10.py +85 -0
- maxframe/tensor/arithmetic/log1p.py +95 -0
- maxframe/tensor/arithmetic/log2.py +85 -0
- maxframe/tensor/arithmetic/logaddexp.py +80 -0
- maxframe/tensor/arithmetic/logaddexp2.py +78 -0
- maxframe/tensor/arithmetic/logical_and.py +81 -0
- maxframe/tensor/arithmetic/logical_not.py +74 -0
- maxframe/tensor/arithmetic/logical_or.py +82 -0
- maxframe/tensor/arithmetic/logical_xor.py +88 -0
- maxframe/tensor/arithmetic/lshift.py +82 -0
- maxframe/tensor/arithmetic/maximum.py +108 -0
- maxframe/tensor/arithmetic/minimum.py +108 -0
- maxframe/tensor/arithmetic/mod.py +104 -0
- maxframe/tensor/arithmetic/modf.py +83 -0
- maxframe/tensor/arithmetic/multiply.py +81 -0
- maxframe/tensor/arithmetic/nan_to_num.py +99 -0
- maxframe/tensor/arithmetic/negative.py +65 -0
- maxframe/tensor/arithmetic/nextafter.py +68 -0
- maxframe/tensor/arithmetic/not_equal.py +72 -0
- maxframe/tensor/arithmetic/positive.py +47 -0
- maxframe/tensor/arithmetic/power.py +106 -0
- maxframe/tensor/arithmetic/rad2deg.py +71 -0
- maxframe/tensor/arithmetic/radians.py +77 -0
- maxframe/tensor/arithmetic/real.py +70 -0
- maxframe/tensor/arithmetic/reciprocal.py +76 -0
- maxframe/tensor/arithmetic/rint.py +68 -0
- maxframe/tensor/arithmetic/rshift.py +81 -0
- maxframe/tensor/arithmetic/setimag.py +29 -0
- maxframe/tensor/arithmetic/setreal.py +29 -0
- maxframe/tensor/arithmetic/sign.py +81 -0
- maxframe/tensor/arithmetic/signbit.py +65 -0
- maxframe/tensor/arithmetic/sin.py +98 -0
- maxframe/tensor/arithmetic/sinc.py +102 -0
- maxframe/tensor/arithmetic/sinh.py +93 -0
- maxframe/tensor/arithmetic/spacing.py +72 -0
- maxframe/tensor/arithmetic/sqrt.py +81 -0
- maxframe/tensor/arithmetic/square.py +69 -0
- maxframe/tensor/arithmetic/subtract.py +81 -0
- maxframe/tensor/arithmetic/tan.py +88 -0
- maxframe/tensor/arithmetic/tanh.py +92 -0
- maxframe/tensor/arithmetic/tests/__init__.py +15 -0
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
- maxframe/tensor/arithmetic/truediv.py +104 -0
- maxframe/tensor/arithmetic/trunc.py +72 -0
- maxframe/tensor/arithmetic/utils.py +65 -0
- maxframe/tensor/array_utils.py +186 -0
- maxframe/tensor/base/__init__.py +34 -0
- maxframe/tensor/base/astype.py +119 -0
- maxframe/tensor/base/atleast_1d.py +74 -0
- maxframe/tensor/base/broadcast_to.py +89 -0
- maxframe/tensor/base/ravel.py +92 -0
- maxframe/tensor/base/tests/__init__.py +13 -0
- maxframe/tensor/base/tests/test_base.py +114 -0
- maxframe/tensor/base/transpose.py +125 -0
- maxframe/tensor/base/unique.py +205 -0
- maxframe/tensor/base/where.py +127 -0
- maxframe/tensor/core.py +724 -0
- maxframe/tensor/datasource/__init__.py +32 -0
- maxframe/tensor/datasource/arange.py +156 -0
- maxframe/tensor/datasource/array.py +415 -0
- maxframe/tensor/datasource/core.py +109 -0
- maxframe/tensor/datasource/empty.py +169 -0
- maxframe/tensor/datasource/from_dataframe.py +70 -0
- maxframe/tensor/datasource/from_dense.py +54 -0
- maxframe/tensor/datasource/from_sparse.py +47 -0
- maxframe/tensor/datasource/full.py +186 -0
- maxframe/tensor/datasource/ones.py +173 -0
- maxframe/tensor/datasource/scalar.py +40 -0
- maxframe/tensor/datasource/tests/__init__.py +13 -0
- maxframe/tensor/datasource/tests/test_datasource.py +278 -0
- maxframe/tensor/datasource/zeros.py +188 -0
- maxframe/tensor/fetch/__init__.py +15 -0
- maxframe/tensor/fetch/core.py +54 -0
- maxframe/tensor/indexing/__init__.py +47 -0
- maxframe/tensor/indexing/choose.py +196 -0
- maxframe/tensor/indexing/compress.py +124 -0
- maxframe/tensor/indexing/core.py +190 -0
- maxframe/tensor/indexing/extract.py +71 -0
- maxframe/tensor/indexing/fill_diagonal.py +183 -0
- maxframe/tensor/indexing/flatnonzero.py +60 -0
- maxframe/tensor/indexing/getitem.py +175 -0
- maxframe/tensor/indexing/nonzero.py +120 -0
- maxframe/tensor/indexing/setitem.py +132 -0
- maxframe/tensor/indexing/slice.py +29 -0
- maxframe/tensor/indexing/take.py +130 -0
- maxframe/tensor/indexing/tests/__init__.py +15 -0
- maxframe/tensor/indexing/tests/test_indexing.py +234 -0
- maxframe/tensor/indexing/unravel_index.py +103 -0
- maxframe/tensor/merge/__init__.py +15 -0
- maxframe/tensor/merge/stack.py +132 -0
- maxframe/tensor/merge/tests/__init__.py +13 -0
- maxframe/tensor/merge/tests/test_merge.py +52 -0
- maxframe/tensor/operators.py +123 -0
- maxframe/tensor/random/__init__.py +168 -0
- maxframe/tensor/random/beta.py +87 -0
- maxframe/tensor/random/binomial.py +137 -0
- maxframe/tensor/random/bytes.py +39 -0
- maxframe/tensor/random/chisquare.py +110 -0
- maxframe/tensor/random/choice.py +186 -0
- maxframe/tensor/random/core.py +234 -0
- maxframe/tensor/random/dirichlet.py +123 -0
- maxframe/tensor/random/exponential.py +94 -0
- maxframe/tensor/random/f.py +135 -0
- maxframe/tensor/random/gamma.py +128 -0
- maxframe/tensor/random/geometric.py +93 -0
- maxframe/tensor/random/gumbel.py +167 -0
- maxframe/tensor/random/hypergeometric.py +148 -0
- maxframe/tensor/random/laplace.py +133 -0
- maxframe/tensor/random/logistic.py +129 -0
- maxframe/tensor/random/lognormal.py +159 -0
- maxframe/tensor/random/logseries.py +122 -0
- maxframe/tensor/random/multinomial.py +133 -0
- maxframe/tensor/random/multivariate_normal.py +192 -0
- maxframe/tensor/random/negative_binomial.py +125 -0
- maxframe/tensor/random/noncentral_chisquare.py +132 -0
- maxframe/tensor/random/noncentral_f.py +126 -0
- maxframe/tensor/random/normal.py +143 -0
- maxframe/tensor/random/pareto.py +140 -0
- maxframe/tensor/random/permutation.py +104 -0
- maxframe/tensor/random/poisson.py +111 -0
- maxframe/tensor/random/power.py +142 -0
- maxframe/tensor/random/rand.py +82 -0
- maxframe/tensor/random/randint.py +121 -0
- maxframe/tensor/random/randn.py +96 -0
- maxframe/tensor/random/random_integers.py +123 -0
- maxframe/tensor/random/random_sample.py +86 -0
- maxframe/tensor/random/rayleigh.py +110 -0
- maxframe/tensor/random/shuffle.py +61 -0
- maxframe/tensor/random/standard_cauchy.py +105 -0
- maxframe/tensor/random/standard_exponential.py +72 -0
- maxframe/tensor/random/standard_gamma.py +120 -0
- maxframe/tensor/random/standard_normal.py +74 -0
- maxframe/tensor/random/standard_t.py +135 -0
- maxframe/tensor/random/tests/__init__.py +15 -0
- maxframe/tensor/random/tests/test_random.py +167 -0
- maxframe/tensor/random/triangular.py +119 -0
- maxframe/tensor/random/uniform.py +131 -0
- maxframe/tensor/random/vonmises.py +131 -0
- maxframe/tensor/random/wald.py +114 -0
- maxframe/tensor/random/weibull.py +140 -0
- maxframe/tensor/random/zipf.py +122 -0
- maxframe/tensor/rechunk/__init__.py +26 -0
- maxframe/tensor/rechunk/rechunk.py +43 -0
- maxframe/tensor/reduction/__init__.py +66 -0
- maxframe/tensor/reduction/all.py +103 -0
- maxframe/tensor/reduction/allclose.py +88 -0
- maxframe/tensor/reduction/any.py +105 -0
- maxframe/tensor/reduction/argmax.py +103 -0
- maxframe/tensor/reduction/argmin.py +103 -0
- maxframe/tensor/reduction/array_equal.py +64 -0
- maxframe/tensor/reduction/core.py +168 -0
- maxframe/tensor/reduction/count_nonzero.py +81 -0
- maxframe/tensor/reduction/cumprod.py +97 -0
- maxframe/tensor/reduction/cumsum.py +101 -0
- maxframe/tensor/reduction/max.py +120 -0
- maxframe/tensor/reduction/mean.py +123 -0
- maxframe/tensor/reduction/min.py +120 -0
- maxframe/tensor/reduction/nanargmax.py +82 -0
- maxframe/tensor/reduction/nanargmin.py +76 -0
- maxframe/tensor/reduction/nancumprod.py +91 -0
- maxframe/tensor/reduction/nancumsum.py +94 -0
- maxframe/tensor/reduction/nanmax.py +111 -0
- maxframe/tensor/reduction/nanmean.py +106 -0
- maxframe/tensor/reduction/nanmin.py +111 -0
- maxframe/tensor/reduction/nanprod.py +94 -0
- maxframe/tensor/reduction/nanstd.py +126 -0
- maxframe/tensor/reduction/nansum.py +115 -0
- maxframe/tensor/reduction/nanvar.py +149 -0
- maxframe/tensor/reduction/prod.py +130 -0
- maxframe/tensor/reduction/std.py +134 -0
- maxframe/tensor/reduction/sum.py +125 -0
- maxframe/tensor/reduction/tests/__init__.py +13 -0
- maxframe/tensor/reduction/tests/test_reduction.py +181 -0
- maxframe/tensor/reduction/var.py +176 -0
- maxframe/tensor/reshape/__init__.py +17 -0
- maxframe/tensor/reshape/reshape.py +188 -0
- maxframe/tensor/reshape/tests/__init__.py +15 -0
- maxframe/tensor/reshape/tests/test_reshape.py +37 -0
- maxframe/tensor/statistics/__init__.py +13 -0
- maxframe/tensor/statistics/percentile.py +175 -0
- maxframe/tensor/statistics/quantile.py +288 -0
- maxframe/tensor/ufunc/__init__.py +26 -0
- maxframe/tensor/ufunc/ufunc.py +200 -0
- maxframe/tensor/utils.py +718 -0
- maxframe/tests/__init__.py +13 -0
- maxframe/tests/test_codegen.py +69 -0
- maxframe/tests/test_protocol.py +144 -0
- maxframe/tests/test_utils.py +376 -0
- maxframe/tests/utils.py +164 -0
- maxframe/typing_.py +37 -0
- maxframe/udf.py +134 -0
- maxframe/utils.py +1114 -0
- maxframe-0.1.0b5.dist-info/METADATA +104 -0
- maxframe-0.1.0b5.dist-info/RECORD +647 -0
- maxframe-0.1.0b5.dist-info/WHEEL +5 -0
- maxframe-0.1.0b5.dist-info/top_level.txt +2 -0
- maxframe_client/__init__.py +17 -0
- maxframe_client/clients/__init__.py +13 -0
- maxframe_client/clients/framedriver.py +118 -0
- maxframe_client/clients/spe.py +104 -0
- maxframe_client/conftest.py +15 -0
- maxframe_client/fetcher.py +264 -0
- maxframe_client/session/__init__.py +22 -0
- maxframe_client/session/consts.py +36 -0
- maxframe_client/session/graph.py +119 -0
- maxframe_client/session/odps.py +482 -0
- maxframe_client/session/task.py +280 -0
- maxframe_client/session/tests/__init__.py +13 -0
- maxframe_client/session/tests/test_task.py +85 -0
- maxframe_client/tests/__init__.py +13 -0
- maxframe_client/tests/test_fetcher.py +89 -0
- maxframe_client/tests/test_session.py +255 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ..core import OutputType
|
|
16
|
+
from ..core.operator import (
|
|
17
|
+
Fuse,
|
|
18
|
+
HasInput,
|
|
19
|
+
MapReduceOperator,
|
|
20
|
+
Operator,
|
|
21
|
+
ShuffleProxy,
|
|
22
|
+
TileableOperatorMixin,
|
|
23
|
+
)
|
|
24
|
+
from ..serialization.serializables import DataTypeField
|
|
25
|
+
from ..utils import calc_nsplits
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class TensorOperatorMixin(TileableOperatorMixin):
|
|
29
|
+
__slots__ = ()
|
|
30
|
+
_op_module_ = "tensor"
|
|
31
|
+
_output_type_ = OutputType.tensor
|
|
32
|
+
|
|
33
|
+
def new_tensors(
|
|
34
|
+
self,
|
|
35
|
+
inputs,
|
|
36
|
+
shape=None,
|
|
37
|
+
dtype=None,
|
|
38
|
+
order=None,
|
|
39
|
+
chunks=None,
|
|
40
|
+
nsplits=None,
|
|
41
|
+
output_limit=None,
|
|
42
|
+
kws=None,
|
|
43
|
+
**kw
|
|
44
|
+
):
|
|
45
|
+
return self.new_tileables(
|
|
46
|
+
inputs,
|
|
47
|
+
shape=shape,
|
|
48
|
+
chunks=chunks,
|
|
49
|
+
nsplits=nsplits,
|
|
50
|
+
output_limit=output_limit,
|
|
51
|
+
kws=kws,
|
|
52
|
+
dtype=dtype,
|
|
53
|
+
order=order,
|
|
54
|
+
**kw
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def new_tensor(self, inputs, shape, dtype=None, order=None, **kw):
|
|
58
|
+
if getattr(self, "output_limit") != 1:
|
|
59
|
+
raise TypeError("cannot new tensor with more than 1 outputs")
|
|
60
|
+
return self.new_tensors(inputs, shape=shape, dtype=dtype, order=order, **kw)[0]
|
|
61
|
+
|
|
62
|
+
@classmethod
|
|
63
|
+
def concat_tileable_chunks(cls, tileable):
|
|
64
|
+
from .merge.concatenate import TensorConcatenate
|
|
65
|
+
|
|
66
|
+
tensor = tileable
|
|
67
|
+
assert not tensor.is_coarse()
|
|
68
|
+
|
|
69
|
+
op = TensorConcatenate(dtype=tensor.dtype)
|
|
70
|
+
chunk = TensorConcatenate(dtype=tensor.dtype).new_chunk(
|
|
71
|
+
tensor.chunks, shape=tensor.shape, index=(0,) * tileable.ndim
|
|
72
|
+
)
|
|
73
|
+
return op.new_tensor(
|
|
74
|
+
[tensor],
|
|
75
|
+
tensor.shape,
|
|
76
|
+
chunks=[chunk],
|
|
77
|
+
nsplits=tuple((s,) for s in tensor.shape),
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
@classmethod
|
|
81
|
+
def create_tileable_from_chunks(cls, chunks, inputs=None, **kw):
|
|
82
|
+
chunk_idx_to_shape = {c.index: c.shape for c in chunks}
|
|
83
|
+
nsplits = calc_nsplits(chunk_idx_to_shape)
|
|
84
|
+
shape = tuple(sum(ns) for ns in nsplits)
|
|
85
|
+
op = chunks[0].op.copy().reset_key()
|
|
86
|
+
return op.new_tensor(
|
|
87
|
+
inputs,
|
|
88
|
+
shape=shape,
|
|
89
|
+
chunks=chunks,
|
|
90
|
+
nsplits=nsplits,
|
|
91
|
+
dtype=chunks[0].dtype,
|
|
92
|
+
**kw
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class TensorOperator(Operator):
|
|
97
|
+
_output_type_ = OutputType.tensor
|
|
98
|
+
|
|
99
|
+
dtype = DataTypeField("dtype", default=None)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class TensorHasInput(HasInput):
|
|
103
|
+
_output_type_ = OutputType.tensor
|
|
104
|
+
|
|
105
|
+
dtype = DataTypeField("dtype", default=None)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class TensorShuffleProxy(ShuffleProxy, TensorOperatorMixin):
|
|
109
|
+
_output_type_ = OutputType.tensor
|
|
110
|
+
|
|
111
|
+
dtype = DataTypeField("dtype", default=None)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class TensorMapReduceOperator(MapReduceOperator):
|
|
115
|
+
_output_type_ = OutputType.tensor
|
|
116
|
+
|
|
117
|
+
dtype = DataTypeField("dtype", default=None)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class TensorFuse(Fuse):
|
|
121
|
+
_output_type_ = OutputType.tensor
|
|
122
|
+
|
|
123
|
+
dtype = DataTypeField("dtype", default=None)
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
from .beta import TensorRandBeta, beta
|
|
18
|
+
from .binomial import TensorBinomial, binomial
|
|
19
|
+
from .bytes import bytes
|
|
20
|
+
from .chisquare import TensorChisquareDist, chisquare
|
|
21
|
+
from .choice import TensorChoice, choice
|
|
22
|
+
from .core import RandomState, RandomStateField, _random_state
|
|
23
|
+
from .dirichlet import TensorDirichlet, dirichlet
|
|
24
|
+
from .exponential import TensorExponential, exponential
|
|
25
|
+
from .f import TensorF, f
|
|
26
|
+
from .gamma import TensorRandGamma, gamma
|
|
27
|
+
from .geometric import TensorGeometric, geometric
|
|
28
|
+
from .gumbel import TensorGumbel, gumbel
|
|
29
|
+
from .hypergeometric import TensorHypergeometric, hypergeometric
|
|
30
|
+
from .laplace import TensorLaplace, laplace
|
|
31
|
+
from .logistic import TensorLogistic, logistic
|
|
32
|
+
from .lognormal import TensorLognormal, lognormal
|
|
33
|
+
from .logseries import TensorLogseries, logseries
|
|
34
|
+
from .multinomial import TensorMultinomial, multinomial
|
|
35
|
+
from .multivariate_normal import TensorMultivariateNormal, multivariate_normal
|
|
36
|
+
from .negative_binomial import TensorNegativeBinomial, negative_binomial
|
|
37
|
+
from .noncentral_chisquare import TensorNoncentralChisquare, noncentral_chisquare
|
|
38
|
+
from .noncentral_f import TensorNoncentralF, noncentral_f
|
|
39
|
+
from .normal import TensorNormal, normal
|
|
40
|
+
from .pareto import TensorPareto, pareto
|
|
41
|
+
from .permutation import TensorPermutation, permutation
|
|
42
|
+
from .poisson import TensorPoisson, poisson
|
|
43
|
+
from .power import TensorRandomPower, power
|
|
44
|
+
from .rand import TensorRand, rand
|
|
45
|
+
from .randint import TensorRandint, randint
|
|
46
|
+
from .randn import TensorRandn, randn
|
|
47
|
+
from .random_integers import TensorRandomIntegers, random_integers
|
|
48
|
+
from .random_sample import TensorRandomSample, random_sample
|
|
49
|
+
from .rayleigh import TensorRayleigh, rayleigh
|
|
50
|
+
from .shuffle import shuffle
|
|
51
|
+
from .standard_cauchy import TensorStandardCauchy, standard_cauchy
|
|
52
|
+
from .standard_exponential import TensorStandardExponential, standard_exponential
|
|
53
|
+
from .standard_gamma import TensorStandardGamma, standard_gamma
|
|
54
|
+
from .standard_normal import TensorStandardNormal, standard_normal
|
|
55
|
+
from .standard_t import TensorStandardT, standard_t
|
|
56
|
+
from .triangular import TensorTriangular, triangular
|
|
57
|
+
from .uniform import TensorUniform, uniform
|
|
58
|
+
from .vonmises import TensorVonmises, vonmises
|
|
59
|
+
from .wald import TensorWald, wald
|
|
60
|
+
from .weibull import TensorWeibull, weibull
|
|
61
|
+
from .zipf import TensorZipf, zipf
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _install():
|
|
65
|
+
setattr(RandomState, "rand", rand)
|
|
66
|
+
setattr(RandomState, "randn", randn)
|
|
67
|
+
setattr(RandomState, "randint", randint)
|
|
68
|
+
setattr(RandomState, "random_integers", random_integers)
|
|
69
|
+
setattr(RandomState, "random_sample", random_sample)
|
|
70
|
+
setattr(RandomState, "ranf", random_sample)
|
|
71
|
+
setattr(RandomState, "random", random_sample)
|
|
72
|
+
setattr(RandomState, "sample", random_sample)
|
|
73
|
+
setattr(RandomState, "choice", choice)
|
|
74
|
+
setattr(RandomState, "bytes", bytes)
|
|
75
|
+
setattr(RandomState, "beta", beta)
|
|
76
|
+
setattr(RandomState, "binomial", binomial)
|
|
77
|
+
setattr(RandomState, "chisquare", chisquare)
|
|
78
|
+
setattr(RandomState, "dirichlet", dirichlet)
|
|
79
|
+
setattr(RandomState, "exponential", exponential)
|
|
80
|
+
setattr(RandomState, "f", f)
|
|
81
|
+
setattr(RandomState, "gamma", gamma)
|
|
82
|
+
setattr(RandomState, "geometric", geometric)
|
|
83
|
+
setattr(RandomState, "gumbel", gumbel)
|
|
84
|
+
setattr(RandomState, "hypergeometric", hypergeometric)
|
|
85
|
+
setattr(RandomState, "laplace", laplace)
|
|
86
|
+
setattr(RandomState, "logistic", logistic)
|
|
87
|
+
setattr(RandomState, "lognormal", lognormal)
|
|
88
|
+
setattr(RandomState, "logseries", logseries)
|
|
89
|
+
setattr(RandomState, "multinomial", multinomial)
|
|
90
|
+
setattr(RandomState, "multivariate_normal", multivariate_normal)
|
|
91
|
+
setattr(RandomState, "negative_binomial", negative_binomial)
|
|
92
|
+
setattr(RandomState, "noncentral_chisquare", noncentral_chisquare)
|
|
93
|
+
setattr(RandomState, "noncentral_f", noncentral_f)
|
|
94
|
+
setattr(RandomState, "normal", normal)
|
|
95
|
+
setattr(RandomState, "pareto", pareto)
|
|
96
|
+
setattr(RandomState, "poisson", poisson)
|
|
97
|
+
setattr(RandomState, "power", power)
|
|
98
|
+
setattr(RandomState, "rayleigh", rayleigh)
|
|
99
|
+
setattr(RandomState, "standard_cauchy", standard_cauchy)
|
|
100
|
+
setattr(RandomState, "standard_exponential", standard_exponential)
|
|
101
|
+
setattr(RandomState, "standard_gamma", standard_gamma)
|
|
102
|
+
setattr(RandomState, "standard_normal", standard_normal)
|
|
103
|
+
setattr(RandomState, "standard_t", standard_t)
|
|
104
|
+
setattr(RandomState, "triangular", triangular)
|
|
105
|
+
setattr(RandomState, "uniform", uniform)
|
|
106
|
+
setattr(RandomState, "vonmises", vonmises)
|
|
107
|
+
setattr(RandomState, "wald", wald)
|
|
108
|
+
setattr(RandomState, "weibull", weibull)
|
|
109
|
+
setattr(RandomState, "zipf", zipf)
|
|
110
|
+
setattr(RandomState, "permutation", permutation)
|
|
111
|
+
setattr(RandomState, "shuffle", shuffle)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
_install()
|
|
115
|
+
del _install
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
seed = _random_state.seed
|
|
119
|
+
|
|
120
|
+
rand = _random_state.rand
|
|
121
|
+
randn = _random_state.randn
|
|
122
|
+
randint = _random_state.randint
|
|
123
|
+
random_integers = _random_state.random_integers
|
|
124
|
+
random_sample = _random_state.random_sample
|
|
125
|
+
random = _random_state.random
|
|
126
|
+
ranf = _random_state.ranf
|
|
127
|
+
sample = _random_state.sample
|
|
128
|
+
choice = _random_state.choice
|
|
129
|
+
bytes = _random_state.bytes
|
|
130
|
+
|
|
131
|
+
permutation = _random_state.permutation
|
|
132
|
+
shuffle = _random_state.shuffle
|
|
133
|
+
|
|
134
|
+
beta = _random_state.beta
|
|
135
|
+
binomial = _random_state.binomial
|
|
136
|
+
chisquare = _random_state.chisquare
|
|
137
|
+
dirichlet = _random_state.dirichlet
|
|
138
|
+
exponential = _random_state.exponential
|
|
139
|
+
f = _random_state.f
|
|
140
|
+
gamma = _random_state.gamma
|
|
141
|
+
geometric = _random_state.geometric
|
|
142
|
+
gumbel = _random_state.gumbel
|
|
143
|
+
hypergeometric = _random_state.hypergeometric
|
|
144
|
+
laplace = _random_state.laplace
|
|
145
|
+
logistic = _random_state.logistic
|
|
146
|
+
lognormal = _random_state.lognormal
|
|
147
|
+
logseries = _random_state.logseries
|
|
148
|
+
multinomial = _random_state.multinomial
|
|
149
|
+
multivariate_normal = _random_state.multivariate_normal
|
|
150
|
+
negative_binomial = _random_state.negative_binomial
|
|
151
|
+
noncentral_chisquare = _random_state.noncentral_chisquare
|
|
152
|
+
noncentral_f = _random_state.noncentral_f
|
|
153
|
+
normal = _random_state.normal
|
|
154
|
+
pareto = _random_state.pareto
|
|
155
|
+
poisson = _random_state.poisson
|
|
156
|
+
power = _random_state.power
|
|
157
|
+
rayleigh = _random_state.rayleigh
|
|
158
|
+
standard_cauchy = _random_state.standard_cauchy
|
|
159
|
+
standard_exponential = _random_state.standard_exponential
|
|
160
|
+
standard_gamma = _random_state.standard_gamma
|
|
161
|
+
standard_normal = _random_state.standard_normal
|
|
162
|
+
standard_t = _random_state.standard_t
|
|
163
|
+
triangular = _random_state.triangular
|
|
164
|
+
uniform = _random_state.uniform
|
|
165
|
+
vonmises = _random_state.vonmises
|
|
166
|
+
wald = _random_state.wald
|
|
167
|
+
weibull = _random_state.weibull
|
|
168
|
+
zipf = _random_state.zipf
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
import numpy as np
|
|
17
|
+
|
|
18
|
+
from ... import opcodes
|
|
19
|
+
from ...serialization.serializables import AnyField
|
|
20
|
+
from ..utils import gen_random_seeds
|
|
21
|
+
from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TensorRandBeta(TensorDistribution, TensorRandomOperatorMixin):
|
|
25
|
+
_input_fields_ = ["a", "b"]
|
|
26
|
+
_op_type_ = opcodes.RAND_BETA
|
|
27
|
+
|
|
28
|
+
_fields_ = "a", "b", "size"
|
|
29
|
+
a = AnyField("a")
|
|
30
|
+
b = AnyField("b")
|
|
31
|
+
_func_name = "beta"
|
|
32
|
+
|
|
33
|
+
def __call__(self, a, b, chunk_size=None):
|
|
34
|
+
return self.new_tensor([a, b], None, raw_chunk_size=chunk_size)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def beta(random_state, a, b, size=None, chunk_size=None, gpu=None, dtype=None):
|
|
38
|
+
r"""
|
|
39
|
+
Draw samples from a Beta distribution.
|
|
40
|
+
|
|
41
|
+
The Beta distribution is a special case of the Dirichlet distribution,
|
|
42
|
+
and is related to the Gamma distribution. It has the probability
|
|
43
|
+
distribution function
|
|
44
|
+
|
|
45
|
+
.. math:: f(x; a,b) = \frac{1}{B(\alpha, \beta)} x^{\alpha - 1}
|
|
46
|
+
(1 - x)^{\beta - 1},
|
|
47
|
+
|
|
48
|
+
where the normalisation, B, is the beta function,
|
|
49
|
+
|
|
50
|
+
.. math:: B(\alpha, \beta) = \int_0^1 t^{\alpha - 1}
|
|
51
|
+
(1 - t)^{\beta - 1} dt.
|
|
52
|
+
|
|
53
|
+
It is often seen in Bayesian inference and order statistics.
|
|
54
|
+
|
|
55
|
+
Parameters
|
|
56
|
+
----------
|
|
57
|
+
a : float or array_like of floats
|
|
58
|
+
Alpha, non-negative.
|
|
59
|
+
b : float or array_like of floats
|
|
60
|
+
Beta, non-negative.
|
|
61
|
+
size : int or tuple of ints, optional
|
|
62
|
+
Output shape. If the given shape is, e.g., ``(m, n, k)``, then
|
|
63
|
+
``m * n * k`` samples are drawn. If size is ``None`` (default),
|
|
64
|
+
a single value is returned if ``a`` and ``b`` are both scalars.
|
|
65
|
+
Otherwise, ``mt.broadcast(a, b).size`` samples are drawn.
|
|
66
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
67
|
+
Desired chunk size on each dimension
|
|
68
|
+
gpu : bool, optional
|
|
69
|
+
Allocate the tensor on GPU if True, False as default
|
|
70
|
+
dtype : data-type, optional
|
|
71
|
+
Data-type of the returned tensor.
|
|
72
|
+
|
|
73
|
+
Returns
|
|
74
|
+
-------
|
|
75
|
+
out : Tensor or scalar
|
|
76
|
+
Drawn samples from the parameterized beta distribution.
|
|
77
|
+
"""
|
|
78
|
+
if dtype is None:
|
|
79
|
+
dtype = (
|
|
80
|
+
np.random.RandomState()
|
|
81
|
+
.beta(handle_array(a), handle_array(b), size=(0,))
|
|
82
|
+
.dtype
|
|
83
|
+
)
|
|
84
|
+
size = random_state._handle_size(size)
|
|
85
|
+
seed = gen_random_seeds(1, random_state.to_numpy())[0]
|
|
86
|
+
op = TensorRandBeta(seed=seed, size=size, gpu=gpu, dtype=dtype)
|
|
87
|
+
return op(a, b, chunk_size=chunk_size)
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
from ... import opcodes
|
|
20
|
+
from ...serialization.serializables import AnyField
|
|
21
|
+
from ..utils import gen_random_seeds
|
|
22
|
+
from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TensorBinomial(TensorDistribution, TensorRandomOperatorMixin):
|
|
26
|
+
_input_fields_ = ["n", "p"]
|
|
27
|
+
_op_type_ = opcodes.RAND_BINOMIAL
|
|
28
|
+
|
|
29
|
+
_fields_ = "n", "p", "size"
|
|
30
|
+
n = AnyField("n")
|
|
31
|
+
p = AnyField("p")
|
|
32
|
+
_func_name = "binomial"
|
|
33
|
+
|
|
34
|
+
def __call__(self, n, p, chunk_size=None):
|
|
35
|
+
return self.new_tensor([n, p], None, raw_chunk_size=chunk_size)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def binomial(random_state, n, p, size=None, chunk_size=None, gpu=None, dtype=None):
|
|
39
|
+
r"""
|
|
40
|
+
Draw samples from a binomial distribution.
|
|
41
|
+
|
|
42
|
+
Samples are drawn from a binomial distribution with specified
|
|
43
|
+
parameters, n trials and p probability of success where
|
|
44
|
+
n an integer >= 0 and p is in the interval [0,1]. (n may be
|
|
45
|
+
input as a float, but it is truncated to an integer in use)
|
|
46
|
+
|
|
47
|
+
Parameters
|
|
48
|
+
----------
|
|
49
|
+
n : int or array_like of ints
|
|
50
|
+
Parameter of the distribution, >= 0. Floats are also accepted,
|
|
51
|
+
but they will be truncated to integers.
|
|
52
|
+
p : float or array_like of floats
|
|
53
|
+
Parameter of the distribution, >= 0 and <=1.
|
|
54
|
+
size : int or tuple of ints, optional
|
|
55
|
+
Output shape. If the given shape is, e.g., ``(m, n, k)``, then
|
|
56
|
+
``m * n * k`` samples are drawn. If size is ``None`` (default),
|
|
57
|
+
a single value is returned if ``n`` and ``p`` are both scalars.
|
|
58
|
+
Otherwise, ``mt.broadcast(n, p).size`` samples are drawn.
|
|
59
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
60
|
+
Desired chunk size on each dimension
|
|
61
|
+
gpu : bool, optional
|
|
62
|
+
Allocate the tensor on GPU if True, False as default
|
|
63
|
+
dtype : data-type, optional
|
|
64
|
+
Data-type of the returned tensor.
|
|
65
|
+
|
|
66
|
+
Returns
|
|
67
|
+
-------
|
|
68
|
+
out : Tensor or scalar
|
|
69
|
+
Drawn samples from the parameterized binomial distribution, where
|
|
70
|
+
each sample is equal to the number of successes over the n trials.
|
|
71
|
+
|
|
72
|
+
See Also
|
|
73
|
+
--------
|
|
74
|
+
scipy.stats.binom : probability density function, distribution or
|
|
75
|
+
cumulative density function, etc.
|
|
76
|
+
|
|
77
|
+
Notes
|
|
78
|
+
-----
|
|
79
|
+
The probability density for the binomial distribution is
|
|
80
|
+
|
|
81
|
+
.. math:: P(N) = \binom{n}{N}p^N(1-p)^{n-N},
|
|
82
|
+
|
|
83
|
+
where :math:`n` is the number of trials, :math:`p` is the probability
|
|
84
|
+
of success, and :math:`N` is the number of successes.
|
|
85
|
+
|
|
86
|
+
When estimating the standard error of a proportion in a population by
|
|
87
|
+
using a random sample, the normal distribution works well unless the
|
|
88
|
+
product p*n <=5, where p = population proportion estimate, and n =
|
|
89
|
+
number of samples, in which case the binomial distribution is used
|
|
90
|
+
instead. For example, a sample of 15 people shows 4 who are left
|
|
91
|
+
handed, and 11 who are right handed. Then p = 4/15 = 27%. 0.27*15 = 4,
|
|
92
|
+
so the binomial distribution should be used in this case.
|
|
93
|
+
|
|
94
|
+
References
|
|
95
|
+
----------
|
|
96
|
+
.. [1] Dalgaard, Peter, "Introductory Statistics with R",
|
|
97
|
+
Springer-Verlag, 2002.
|
|
98
|
+
.. [2] Glantz, Stanton A. "Primer of Biostatistics.", McGraw-Hill,
|
|
99
|
+
Fifth Edition, 2002.
|
|
100
|
+
.. [3] Lentner, Marvin, "Elementary Applied Statistics", Bogden
|
|
101
|
+
and Quigley, 1972.
|
|
102
|
+
.. [4] Weisstein, Eric W. "Binomial Distribution." From MathWorld--A
|
|
103
|
+
Wolfram Web Resource.
|
|
104
|
+
http://mathworld.wolfram.com/BinomialDistribution.html
|
|
105
|
+
.. [5] Wikipedia, "Binomial distribution",
|
|
106
|
+
http://en.wikipedia.org/wiki/Binomial_distribution
|
|
107
|
+
|
|
108
|
+
Examples
|
|
109
|
+
--------
|
|
110
|
+
Draw samples from the distribution:
|
|
111
|
+
|
|
112
|
+
>>> import maxframe.tensor as mt
|
|
113
|
+
|
|
114
|
+
>>> n, p = 10, .5 # number of trials, probability of each trial
|
|
115
|
+
>>> s = mt.random.binomial(n, p, 1000).execute()
|
|
116
|
+
# result of flipping a coin 10 times, tested 1000 times.
|
|
117
|
+
|
|
118
|
+
A real world example. A company drills 9 wild-cat oil exploration
|
|
119
|
+
wells, each with an estimated probability of success of 0.1. All nine
|
|
120
|
+
wells fail. What is the probability of that happening?
|
|
121
|
+
|
|
122
|
+
Let's do 20,000 trials of the model, and count the number that
|
|
123
|
+
generate zero positive results.
|
|
124
|
+
|
|
125
|
+
>>> (mt.sum(mt.random.binomial(9, 0.1, 20000) == 0)/20000.).execute()
|
|
126
|
+
# answer = 0.38885, or 38%.
|
|
127
|
+
"""
|
|
128
|
+
if dtype is None:
|
|
129
|
+
dtype = (
|
|
130
|
+
np.random.RandomState()
|
|
131
|
+
.binomial(handle_array(n), handle_array(p), size=(0,))
|
|
132
|
+
.dtype
|
|
133
|
+
)
|
|
134
|
+
size = random_state._handle_size(size)
|
|
135
|
+
seed = gen_random_seeds(1, random_state.to_numpy())[0]
|
|
136
|
+
op = TensorBinomial(seed=seed, size=size, gpu=gpu, dtype=dtype)
|
|
137
|
+
return op(n, p, chunk_size=chunk_size)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def bytes(random_state, length):
|
|
19
|
+
"""
|
|
20
|
+
Return random bytes.
|
|
21
|
+
|
|
22
|
+
Parameters
|
|
23
|
+
----------
|
|
24
|
+
length : int
|
|
25
|
+
Number of random bytes.
|
|
26
|
+
|
|
27
|
+
Returns
|
|
28
|
+
-------
|
|
29
|
+
out : str
|
|
30
|
+
String of length `length`.
|
|
31
|
+
|
|
32
|
+
Examples
|
|
33
|
+
--------
|
|
34
|
+
>>> import maxframe.tensor as mt
|
|
35
|
+
|
|
36
|
+
>>> mt.random.bytes(10)
|
|
37
|
+
' eh\x85\x022SZ\xbf\xa4' #random
|
|
38
|
+
"""
|
|
39
|
+
return random_state._random_state.bytes(length)
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
from ... import opcodes
|
|
20
|
+
from ...serialization.serializables import AnyField
|
|
21
|
+
from ..utils import gen_random_seeds
|
|
22
|
+
from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TensorChisquareDist(TensorDistribution, TensorRandomOperatorMixin):
|
|
26
|
+
_input_fields_ = ["df"]
|
|
27
|
+
_op_type_ = opcodes.RAND_CHISQUARE
|
|
28
|
+
|
|
29
|
+
_fields_ = "df", "size"
|
|
30
|
+
df = AnyField("df")
|
|
31
|
+
_func_name = "chisquare"
|
|
32
|
+
|
|
33
|
+
def __call__(self, df, chunk_size=None):
|
|
34
|
+
return self.new_tensor([df], self.size, raw_chunk_size=chunk_size)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def chisquare(random_state, df, size=None, chunk_size=None, gpu=None, dtype=None):
|
|
38
|
+
r"""
|
|
39
|
+
Draw samples from a chi-square distribution.
|
|
40
|
+
|
|
41
|
+
When `df` independent random variables, each with standard normal
|
|
42
|
+
distributions (mean 0, variance 1), are squared and summed, the
|
|
43
|
+
resulting distribution is chi-square (see Notes). This distribution
|
|
44
|
+
is often used in hypothesis testing.
|
|
45
|
+
|
|
46
|
+
Parameters
|
|
47
|
+
----------
|
|
48
|
+
df : float or array_like of floats
|
|
49
|
+
Number of degrees of freedom, should be > 0.
|
|
50
|
+
size : int or tuple of ints, optional
|
|
51
|
+
Output shape. If the given shape is, e.g., ``(m, n, k)``, then
|
|
52
|
+
``m * n * k`` samples are drawn. If size is ``None`` (default),
|
|
53
|
+
a single value is returned if ``df`` is a scalar. Otherwise,
|
|
54
|
+
``mt.array(df).size`` samples are drawn.
|
|
55
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
56
|
+
Desired chunk size on each dimension
|
|
57
|
+
gpu : bool, optional
|
|
58
|
+
Allocate the tensor on GPU if True, False as default
|
|
59
|
+
dtype : data-type, optional
|
|
60
|
+
Data-type of the returned tensor.
|
|
61
|
+
|
|
62
|
+
Returns
|
|
63
|
+
-------
|
|
64
|
+
out : Tensor or scalar
|
|
65
|
+
Drawn samples from the parameterized chi-square distribution.
|
|
66
|
+
|
|
67
|
+
Raises
|
|
68
|
+
------
|
|
69
|
+
ValueError
|
|
70
|
+
When `df` <= 0 or when an inappropriate `size` (e.g. ``size=-1``)
|
|
71
|
+
is given.
|
|
72
|
+
|
|
73
|
+
Notes
|
|
74
|
+
-----
|
|
75
|
+
The variable obtained by summing the squares of `df` independent,
|
|
76
|
+
standard normally distributed random variables:
|
|
77
|
+
|
|
78
|
+
.. math:: Q = \sum_{i=0}^{\mathtt{df}} X^2_i
|
|
79
|
+
|
|
80
|
+
is chi-square distributed, denoted
|
|
81
|
+
|
|
82
|
+
.. math:: Q \sim \chi^2_k.
|
|
83
|
+
|
|
84
|
+
The probability density function of the chi-squared distribution is
|
|
85
|
+
|
|
86
|
+
.. math:: p(x) = \frac{(1/2)^{k/2}}{\Gamma(k/2)}
|
|
87
|
+
x^{k/2 - 1} e^{-x/2},
|
|
88
|
+
|
|
89
|
+
where :math:`\Gamma` is the gamma function,
|
|
90
|
+
|
|
91
|
+
.. math:: \Gamma(x) = \int_0^{-\infty} t^{x - 1} e^{-t} dt.
|
|
92
|
+
|
|
93
|
+
References
|
|
94
|
+
----------
|
|
95
|
+
.. [1] NIST "Engineering Statistics Handbook"
|
|
96
|
+
http://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
|
|
97
|
+
|
|
98
|
+
Examples
|
|
99
|
+
--------
|
|
100
|
+
>>> import maxframe.tensor as mt
|
|
101
|
+
|
|
102
|
+
>>> mt.random.chisquare(2,4).execute()
|
|
103
|
+
array([ 1.89920014, 9.00867716, 3.13710533, 5.62318272])
|
|
104
|
+
"""
|
|
105
|
+
if dtype is None:
|
|
106
|
+
dtype = np.random.RandomState().chisquare(handle_array(df), size=(0,)).dtype
|
|
107
|
+
size = random_state._handle_size(size)
|
|
108
|
+
seed = gen_random_seeds(1, random_state.to_numpy())[0]
|
|
109
|
+
op = TensorChisquareDist(seed=seed, size=size, gpu=gpu, dtype=dtype)
|
|
110
|
+
return op(df, chunk_size=chunk_size)
|