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,40 @@
|
|
|
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 .core import TensorNoInput
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Scalar(TensorNoInput):
|
|
24
|
+
"""
|
|
25
|
+
Operator represents scalar type.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
_op_type_ = opcodes.SCALAR
|
|
29
|
+
|
|
30
|
+
data = AnyField("data", default=None)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def scalar(data, dtype=None, gpu=None):
|
|
34
|
+
try:
|
|
35
|
+
arr = np.array(data, dtype=dtype)
|
|
36
|
+
op = Scalar(data=arr, dtype=arr.dtype, gpu=gpu)
|
|
37
|
+
shape = ()
|
|
38
|
+
return op(shape)
|
|
39
|
+
except ValueError:
|
|
40
|
+
raise TypeError(f"Expect scalar, got: {data}")
|
|
@@ -0,0 +1,13 @@
|
|
|
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.
|
|
@@ -0,0 +1,278 @@
|
|
|
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 copy import copy
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
import pytest
|
|
19
|
+
import scipy.sparse as sps
|
|
20
|
+
|
|
21
|
+
from .... import dataframe as md
|
|
22
|
+
from ....core import enter_mode
|
|
23
|
+
from ... import arange, full, ones, ones_like, tensor, zeros
|
|
24
|
+
from ...core import SparseTensor, Tensor
|
|
25
|
+
from .. import array, asarray, ascontiguousarray, asfortranarray, fromdense
|
|
26
|
+
from ..array import CSRMatrixDataSource
|
|
27
|
+
from ..from_dataframe import from_dataframe
|
|
28
|
+
from ..from_dense import DenseToSparse
|
|
29
|
+
from ..ones import TensorOnesLike
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_array():
|
|
33
|
+
a = tensor([0, 1, 2], chunk_size=2)
|
|
34
|
+
|
|
35
|
+
b = array(a)
|
|
36
|
+
assert a is not b
|
|
37
|
+
|
|
38
|
+
c = asarray(a)
|
|
39
|
+
assert a is c
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_ascontiguousarray():
|
|
43
|
+
# dtype different
|
|
44
|
+
raw_a = np.asfortranarray(np.random.rand(2, 4))
|
|
45
|
+
raw_b = np.ascontiguousarray(raw_a, dtype="f4")
|
|
46
|
+
|
|
47
|
+
a = tensor(raw_a, chunk_size=2)
|
|
48
|
+
b = ascontiguousarray(a, dtype="f4")
|
|
49
|
+
|
|
50
|
+
assert a.dtype == raw_a.dtype
|
|
51
|
+
assert a.flags["C_CONTIGUOUS"] == raw_a.flags["C_CONTIGUOUS"]
|
|
52
|
+
assert a.flags["F_CONTIGUOUS"] == raw_a.flags["F_CONTIGUOUS"]
|
|
53
|
+
|
|
54
|
+
assert b.dtype == raw_b.dtype
|
|
55
|
+
assert b.flags["C_CONTIGUOUS"] == raw_b.flags["C_CONTIGUOUS"]
|
|
56
|
+
assert b.flags["F_CONTIGUOUS"] == raw_b.flags["F_CONTIGUOUS"]
|
|
57
|
+
|
|
58
|
+
# no copy
|
|
59
|
+
raw_a = np.random.rand(2, 4)
|
|
60
|
+
raw_b = np.ascontiguousarray(raw_a)
|
|
61
|
+
|
|
62
|
+
a = tensor(raw_a, chunk_size=2)
|
|
63
|
+
b = ascontiguousarray(a)
|
|
64
|
+
|
|
65
|
+
assert a.dtype == raw_a.dtype
|
|
66
|
+
assert a.flags["C_CONTIGUOUS"] == raw_a.flags["C_CONTIGUOUS"]
|
|
67
|
+
assert a.flags["F_CONTIGUOUS"] == raw_a.flags["F_CONTIGUOUS"]
|
|
68
|
+
|
|
69
|
+
assert b.dtype == raw_b.dtype
|
|
70
|
+
assert b.flags["C_CONTIGUOUS"] == raw_b.flags["C_CONTIGUOUS"]
|
|
71
|
+
assert b.flags["F_CONTIGUOUS"] == raw_b.flags["F_CONTIGUOUS"]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def test_asfortranarray():
|
|
75
|
+
# dtype different
|
|
76
|
+
raw_a = np.random.rand(2, 4)
|
|
77
|
+
raw_b = np.asfortranarray(raw_a, dtype="f4")
|
|
78
|
+
|
|
79
|
+
a = tensor(raw_a, chunk_size=2)
|
|
80
|
+
b = asfortranarray(a, dtype="f4")
|
|
81
|
+
|
|
82
|
+
assert a.dtype == raw_a.dtype
|
|
83
|
+
assert a.flags["C_CONTIGUOUS"] == raw_a.flags["C_CONTIGUOUS"]
|
|
84
|
+
assert a.flags["F_CONTIGUOUS"] == raw_a.flags["F_CONTIGUOUS"]
|
|
85
|
+
|
|
86
|
+
assert b.dtype == raw_b.dtype
|
|
87
|
+
assert b.flags["C_CONTIGUOUS"] == raw_b.flags["C_CONTIGUOUS"]
|
|
88
|
+
assert b.flags["F_CONTIGUOUS"] == raw_b.flags["F_CONTIGUOUS"]
|
|
89
|
+
|
|
90
|
+
# no copy
|
|
91
|
+
raw_a = np.asfortranarray(np.random.rand(2, 4))
|
|
92
|
+
raw_b = np.asfortranarray(raw_a)
|
|
93
|
+
|
|
94
|
+
a = tensor(raw_a, chunk_size=2)
|
|
95
|
+
b = asfortranarray(a)
|
|
96
|
+
|
|
97
|
+
assert a.dtype == raw_a.dtype
|
|
98
|
+
assert a.flags["C_CONTIGUOUS"] == raw_a.flags["C_CONTIGUOUS"]
|
|
99
|
+
assert a.flags["F_CONTIGUOUS"] == raw_a.flags["F_CONTIGUOUS"]
|
|
100
|
+
|
|
101
|
+
assert b.dtype == raw_b.dtype
|
|
102
|
+
assert b.flags["C_CONTIGUOUS"] == raw_b.flags["C_CONTIGUOUS"]
|
|
103
|
+
assert b.flags["F_CONTIGUOUS"] == raw_b.flags["F_CONTIGUOUS"]
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def test_ones():
|
|
107
|
+
tensor = ones((10, 10, 8), chunk_size=(3, 3, 5))
|
|
108
|
+
assert tensor.shape == (10, 10, 8)
|
|
109
|
+
|
|
110
|
+
tensor = ones((10, 3), chunk_size=(4, 2))
|
|
111
|
+
assert tensor.shape == (10, 3)
|
|
112
|
+
|
|
113
|
+
tensor = ones((10, 5), chunk_size=(2, 3), gpu=True)
|
|
114
|
+
assert tensor.op.gpu is True
|
|
115
|
+
|
|
116
|
+
tensor = ones((2, 3, 4))
|
|
117
|
+
assert len(list(tensor)) == 2
|
|
118
|
+
|
|
119
|
+
tensor2 = ones((2, 3, 4), chunk_size=1)
|
|
120
|
+
assert tensor.op.key != tensor2.op.key
|
|
121
|
+
assert tensor.key != tensor2.key
|
|
122
|
+
|
|
123
|
+
tensor3 = ones((2, 3, 3))
|
|
124
|
+
assert tensor.op.key != tensor3.op.key
|
|
125
|
+
assert tensor.key != tensor3.key
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def test_zeros():
|
|
129
|
+
tensor = zeros((2, 3, 4))
|
|
130
|
+
assert len(list(tensor)) == 2
|
|
131
|
+
assert tensor.op.gpu is None
|
|
132
|
+
|
|
133
|
+
tensor2 = zeros((2, 3, 4), chunk_size=1)
|
|
134
|
+
# tensor's op key must be equal to tensor2
|
|
135
|
+
assert tensor.op.key != tensor2.op.key
|
|
136
|
+
assert tensor.key != tensor2.key
|
|
137
|
+
|
|
138
|
+
tensor3 = zeros((2, 3, 3))
|
|
139
|
+
assert tensor.op.key != tensor3.op.key
|
|
140
|
+
assert tensor.key != tensor3.key
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def test_data_source():
|
|
144
|
+
from ...base.broadcast_to import TensorBroadcastTo
|
|
145
|
+
|
|
146
|
+
data = np.random.random((10, 3))
|
|
147
|
+
t = tensor(data, chunk_size=2)
|
|
148
|
+
assert t.op.gpu is None
|
|
149
|
+
|
|
150
|
+
t = tensor(data, chunk_size=2, gpu=True)
|
|
151
|
+
assert t.op.gpu is True
|
|
152
|
+
|
|
153
|
+
t = full((2, 2), 2, dtype="f4")
|
|
154
|
+
assert t.op.gpu is None
|
|
155
|
+
assert t.shape == (2, 2)
|
|
156
|
+
assert t.dtype == np.float32
|
|
157
|
+
|
|
158
|
+
t = full((2, 2), [1.0, 2.0], dtype="f4")
|
|
159
|
+
assert t.shape == (2, 2)
|
|
160
|
+
assert t.dtype == np.float32
|
|
161
|
+
assert isinstance(t.op, TensorBroadcastTo)
|
|
162
|
+
|
|
163
|
+
with pytest.raises(ValueError):
|
|
164
|
+
full((2, 2), [1.0, 2.0, 3.0], dtype="f4")
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def test_ufunc():
|
|
168
|
+
t = ones((3, 10), chunk_size=2)
|
|
169
|
+
|
|
170
|
+
x = np.add(t, [[1], [2], [3]])
|
|
171
|
+
assert isinstance(x, Tensor)
|
|
172
|
+
|
|
173
|
+
y = np.sum(t, axis=1)
|
|
174
|
+
assert isinstance(y, Tensor)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def test_arange():
|
|
178
|
+
t = arange(10, chunk_size=3)
|
|
179
|
+
|
|
180
|
+
assert t.op.gpu is False
|
|
181
|
+
assert t.shape == (10,)
|
|
182
|
+
|
|
183
|
+
t = arange(0, 10, 3, chunk_size=2)
|
|
184
|
+
assert t.shape == (4,)
|
|
185
|
+
|
|
186
|
+
pytest.raises(TypeError, lambda: arange(10, start=0))
|
|
187
|
+
pytest.raises(TypeError, lambda: arange(0, 10, stop=0))
|
|
188
|
+
pytest.raises(TypeError, lambda: arange())
|
|
189
|
+
pytest.raises(
|
|
190
|
+
ValueError, lambda: arange("1066-10-13", dtype=np.datetime64, chunks=3)
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def test_set_tensor_inputs():
|
|
195
|
+
t1 = tensor([1, 2], chunk_size=2)
|
|
196
|
+
t2 = tensor([2, 3], chunk_size=2)
|
|
197
|
+
t3 = t1 + t2
|
|
198
|
+
|
|
199
|
+
t1c = copy(t1)
|
|
200
|
+
t2c = copy(t2)
|
|
201
|
+
|
|
202
|
+
assert t1c is not t1
|
|
203
|
+
assert t2c is not t2
|
|
204
|
+
|
|
205
|
+
assert t3.op.lhs is t1.data
|
|
206
|
+
assert t3.op.rhs is t2.data
|
|
207
|
+
assert t3.op.inputs == [t1.data, t2.data]
|
|
208
|
+
assert t3.inputs == [t1.data, t2.data]
|
|
209
|
+
|
|
210
|
+
with pytest.raises(StopIteration):
|
|
211
|
+
t3.inputs = []
|
|
212
|
+
|
|
213
|
+
t1 = tensor([1, 2], chunk_size=2)
|
|
214
|
+
t2 = tensor([True, False], chunk_size=2)
|
|
215
|
+
t3 = t1[t2]
|
|
216
|
+
|
|
217
|
+
t1c = copy(t1)
|
|
218
|
+
t2c = copy(t2)
|
|
219
|
+
t3c = copy(t3)
|
|
220
|
+
t3c.inputs = [t1c, t2c]
|
|
221
|
+
|
|
222
|
+
with enter_mode(build=True):
|
|
223
|
+
assert t3c.op.input is t1c.data
|
|
224
|
+
assert t3c.op.indexes[0] is t2c.data
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def test_from_spmatrix():
|
|
228
|
+
t = tensor(sps.csr_matrix([[0, 0, 1], [1, 0, 0]], dtype="f8"), chunk_size=2)
|
|
229
|
+
|
|
230
|
+
assert isinstance(t, SparseTensor)
|
|
231
|
+
assert isinstance(t.op, CSRMatrixDataSource)
|
|
232
|
+
assert t.issparse() is True
|
|
233
|
+
assert not t.op.gpu
|
|
234
|
+
assert isinstance(t.op, CSRMatrixDataSource)
|
|
235
|
+
assert not t.op.gpu
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def test_from_dense():
|
|
239
|
+
t = fromdense(tensor([[0, 0, 1], [1, 0, 0]], chunk_size=2))
|
|
240
|
+
|
|
241
|
+
assert isinstance(t, SparseTensor)
|
|
242
|
+
assert isinstance(t.op, DenseToSparse)
|
|
243
|
+
assert t.issparse() is True
|
|
244
|
+
assert isinstance(t.op, DenseToSparse)
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def test_ones_like():
|
|
248
|
+
t1 = tensor([[0, 0, 1], [1, 0, 0]], chunk_size=2).tosparse()
|
|
249
|
+
t = ones_like(t1, dtype="f8")
|
|
250
|
+
|
|
251
|
+
assert isinstance(t, SparseTensor)
|
|
252
|
+
assert isinstance(t.op, TensorOnesLike)
|
|
253
|
+
assert t.issparse() is True
|
|
254
|
+
assert t.op.gpu is None
|
|
255
|
+
|
|
256
|
+
assert isinstance(t.op, TensorOnesLike)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def test_from_array():
|
|
260
|
+
x = array([1, 2, 3])
|
|
261
|
+
assert x.shape == (3,)
|
|
262
|
+
|
|
263
|
+
y = array([x, x])
|
|
264
|
+
assert y.shape == (2, 3)
|
|
265
|
+
|
|
266
|
+
z = array((x, x, x))
|
|
267
|
+
assert z.shape == (3, 3)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def test_from_dataframe():
|
|
271
|
+
mdf = md.DataFrame(
|
|
272
|
+
{"a": [0, 1, 2], "b": [3, 4, 5], "c": [0.1, 0.2, 0.3]},
|
|
273
|
+
index=["c", "d", "e"],
|
|
274
|
+
chunk_size=2,
|
|
275
|
+
)
|
|
276
|
+
tensor = from_dataframe(mdf)
|
|
277
|
+
assert tensor.shape == (3, 3)
|
|
278
|
+
assert np.float64 == tensor.dtype
|
|
@@ -0,0 +1,188 @@
|
|
|
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
|
+
import numpy as np
|
|
19
|
+
|
|
20
|
+
from ... import opcodes
|
|
21
|
+
from ...serialization.serializables import (
|
|
22
|
+
AnyField,
|
|
23
|
+
FieldTypes,
|
|
24
|
+
KeyField,
|
|
25
|
+
StringField,
|
|
26
|
+
TupleField,
|
|
27
|
+
)
|
|
28
|
+
from ..utils import get_order
|
|
29
|
+
from .array import tensor
|
|
30
|
+
from .core import TensorLike, TensorNoInput
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class TensorZeros(TensorNoInput):
|
|
34
|
+
_op_type_ = opcodes.TENSOR_ZEROS
|
|
35
|
+
|
|
36
|
+
order = StringField("order")
|
|
37
|
+
shape = TupleField("shape", FieldTypes.int64)
|
|
38
|
+
chunk_size = AnyField("chunk_size")
|
|
39
|
+
|
|
40
|
+
def __init__(self, shape=None, **kwargs):
|
|
41
|
+
if type(shape) is int:
|
|
42
|
+
shape = (shape,)
|
|
43
|
+
super().__init__(shape=shape, **kwargs)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def zeros(shape, dtype=None, chunk_size=None, gpu=None, sparse=False, order="C"):
|
|
47
|
+
"""
|
|
48
|
+
Return a new tensor of given shape and type, filled with zeros.
|
|
49
|
+
|
|
50
|
+
Parameters
|
|
51
|
+
----------
|
|
52
|
+
shape : int or sequence of ints
|
|
53
|
+
Shape of the new tensor, e.g., ``(2, 3)`` or ``2``.
|
|
54
|
+
dtype : data-type, optional
|
|
55
|
+
The desired data-type for the array, e.g., `mt.int8`. Default is
|
|
56
|
+
`mt.float64`.
|
|
57
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
58
|
+
Desired chunk size on each dimension
|
|
59
|
+
gpu : bool, optional
|
|
60
|
+
Allocate the tensor on GPU if True, False as default
|
|
61
|
+
sparse: bool, optional
|
|
62
|
+
Create sparse tensor if True, False as default
|
|
63
|
+
order : {'C', 'F'}, optional, default: 'C'
|
|
64
|
+
Whether to store multi-dimensional data in row-major
|
|
65
|
+
(C-style) or column-major (Fortran-style) order in
|
|
66
|
+
memory.
|
|
67
|
+
|
|
68
|
+
Returns
|
|
69
|
+
-------
|
|
70
|
+
out : Tensor
|
|
71
|
+
Tensor of zeros with the given shape, dtype, and order.
|
|
72
|
+
|
|
73
|
+
See Also
|
|
74
|
+
--------
|
|
75
|
+
zeros_like : Return a tensor of zeros with shape and type of input.
|
|
76
|
+
ones_like : Return a tensor of ones with shape and type of input.
|
|
77
|
+
empty_like : Return a empty tensor with shape and type of input.
|
|
78
|
+
ones : Return a new tensor setting values to one.
|
|
79
|
+
empty : Return a new uninitialized tensor.
|
|
80
|
+
|
|
81
|
+
Examples
|
|
82
|
+
--------
|
|
83
|
+
>>> import maxframe.tensor as mt
|
|
84
|
+
>>> mt.zeros(5).execute()
|
|
85
|
+
array([ 0., 0., 0., 0., 0.])
|
|
86
|
+
|
|
87
|
+
>>> mt.zeros((5,), dtype=int).execute()
|
|
88
|
+
array([0, 0, 0, 0, 0])
|
|
89
|
+
|
|
90
|
+
>>> mt.zeros((2, 1)).execute()
|
|
91
|
+
array([[ 0.],
|
|
92
|
+
[ 0.]])
|
|
93
|
+
|
|
94
|
+
>>> s = (2,2)
|
|
95
|
+
>>> mt.zeros(s).execute()
|
|
96
|
+
array([[ 0., 0.],
|
|
97
|
+
[ 0., 0.]])
|
|
98
|
+
|
|
99
|
+
>>> mt.zeros((2,), dtype=[('x', 'i4'), ('y', 'i4')]).execute() # custom dtype
|
|
100
|
+
array([(0, 0), (0, 0)],
|
|
101
|
+
dtype=[('x', '<i4'), ('y', '<i4')])
|
|
102
|
+
"""
|
|
103
|
+
tensor_order = get_order(
|
|
104
|
+
order,
|
|
105
|
+
None,
|
|
106
|
+
available_options="CF",
|
|
107
|
+
err_msg="only 'C' or 'F' order is permitted",
|
|
108
|
+
)
|
|
109
|
+
dtype = np.dtype(dtype or "f8")
|
|
110
|
+
op = TensorZeros(
|
|
111
|
+
dtype=dtype,
|
|
112
|
+
shape=shape,
|
|
113
|
+
chunk_size=chunk_size,
|
|
114
|
+
gpu=gpu,
|
|
115
|
+
sparse=sparse,
|
|
116
|
+
order=order,
|
|
117
|
+
)
|
|
118
|
+
return op(shape, chunk_size=chunk_size, order=tensor_order)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class TensorZerosLike(TensorLike):
|
|
122
|
+
_op_type_ = opcodes.TENSOR_ZEROS_LIKE
|
|
123
|
+
|
|
124
|
+
_input = KeyField("input")
|
|
125
|
+
order = StringField("order")
|
|
126
|
+
|
|
127
|
+
def __init__(self, dtype=None, gpu=None, sparse=False, **kw):
|
|
128
|
+
dtype = np.dtype(dtype) if dtype is not None else None
|
|
129
|
+
super().__init__(dtype=dtype, gpu=gpu, sparse=sparse, **kw)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def zeros_like(a, dtype=None, gpu=None, order="K"):
|
|
133
|
+
"""
|
|
134
|
+
Return a tensor of zeros with the same shape and type as a given tensor.
|
|
135
|
+
|
|
136
|
+
Parameters
|
|
137
|
+
----------
|
|
138
|
+
a : array_like
|
|
139
|
+
The shape and data-type of `a` define these same attributes of
|
|
140
|
+
the returned array.
|
|
141
|
+
dtype : data-type, optional
|
|
142
|
+
Overrides the data type of the result.
|
|
143
|
+
gpu : bool, optional
|
|
144
|
+
Allocate the tensor on GPU if True, None as default
|
|
145
|
+
order : {'C', 'F', 'A', or 'K'}, optional
|
|
146
|
+
Overrides the memory layout of the result. 'C' means C-order,
|
|
147
|
+
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
|
|
148
|
+
'C' otherwise. 'K' means match the layout of `a` as closely
|
|
149
|
+
as possible.
|
|
150
|
+
|
|
151
|
+
Returns
|
|
152
|
+
-------
|
|
153
|
+
out : Tensor
|
|
154
|
+
tensor of zeros with the same shape and type as `a`.
|
|
155
|
+
|
|
156
|
+
See Also
|
|
157
|
+
--------
|
|
158
|
+
ones_like : Return an array of ones with shape and type of input.
|
|
159
|
+
empty_like : Return an empty array with shape and type of input.
|
|
160
|
+
zeros : Return a new array setting values to zero.
|
|
161
|
+
ones : Return a new array setting values to one.
|
|
162
|
+
empty : Return a new uninitialized array.
|
|
163
|
+
|
|
164
|
+
Examples
|
|
165
|
+
--------
|
|
166
|
+
>>> import maxframe.tensr as mt
|
|
167
|
+
>>> x = mt.arange(6)
|
|
168
|
+
>>> x = x.reshape((2, 3))
|
|
169
|
+
>>> x.execute()
|
|
170
|
+
array([[0, 1, 2],
|
|
171
|
+
[3, 4, 5]])
|
|
172
|
+
|
|
173
|
+
>>> mt.zeros_like(x).execute()
|
|
174
|
+
array([[0, 0, 0],
|
|
175
|
+
[0, 0, 0]])
|
|
176
|
+
|
|
177
|
+
>>> y = mt.arange(3, dtype=float)
|
|
178
|
+
>>> y.execute()
|
|
179
|
+
array([ 0., 1., 2.])
|
|
180
|
+
|
|
181
|
+
>>> mt.zeros_like(y).execute()
|
|
182
|
+
array([ 0., 0., 0.])
|
|
183
|
+
"""
|
|
184
|
+
a = tensor(a)
|
|
185
|
+
tensor_order = get_order(order, a.order)
|
|
186
|
+
gpu = a.op.gpu if gpu is None else gpu
|
|
187
|
+
op = TensorZerosLike(dtype=dtype, gpu=gpu, sparse=a.issparse(), order=order)
|
|
188
|
+
return op(a, order=tensor_order)
|
|
@@ -0,0 +1,15 @@
|
|
|
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 TensorFetch, TensorFetchShuffle
|
|
@@ -0,0 +1,54 @@
|
|
|
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, register_fetch_class
|
|
16
|
+
from ...core.operator import Fetch, FetchMixin, FetchShuffle
|
|
17
|
+
from ...serialization.serializables import DataTypeField
|
|
18
|
+
from ..operators import TensorOperatorMixin
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class TensorFetchMixin(TensorOperatorMixin, FetchMixin):
|
|
22
|
+
__slots__ = ()
|
|
23
|
+
_output_type_ = OutputType.tensor
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class TensorFetch(TensorFetchMixin, Fetch):
|
|
27
|
+
dtype = DataTypeField("dtype")
|
|
28
|
+
|
|
29
|
+
def __init__(self, **kw):
|
|
30
|
+
kw.pop("output_types", None)
|
|
31
|
+
kw.pop("_output_types", None)
|
|
32
|
+
super().__init__(**kw)
|
|
33
|
+
|
|
34
|
+
def _new_tileables(self, inputs, kws=None, **kw):
|
|
35
|
+
if "_key" in kw and self.source_key is None:
|
|
36
|
+
self.source_key = kw["_key"]
|
|
37
|
+
return super()._new_tileables(inputs, kws=kws, **kw)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class TensorFetchShuffle(TensorFetchMixin, FetchShuffle):
|
|
41
|
+
_dtype = DataTypeField("dtype")
|
|
42
|
+
|
|
43
|
+
def __init__(self, **kw):
|
|
44
|
+
kw.pop("output_types", None)
|
|
45
|
+
kw.pop("_output_types", None)
|
|
46
|
+
super().__init__(**kw)
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def dtype(self):
|
|
50
|
+
return getattr(self, "_dtype", None)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
register_fetch_class(OutputType.tensor, TensorFetch, TensorFetchShuffle)
|
|
54
|
+
register_fetch_class(OutputType.scalar, TensorFetch, TensorFetchShuffle)
|
|
@@ -0,0 +1,47 @@
|
|
|
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 .choose import TensorChoose, choose
|
|
16
|
+
from .compress import compress
|
|
17
|
+
from .extract import extract
|
|
18
|
+
from .fill_diagonal import TensorFillDiagonal, fill_diagonal
|
|
19
|
+
from .flatnonzero import flatnonzero
|
|
20
|
+
from .getitem import FancyIndexingConcat, FancyIndexingDistribute, TensorIndex
|
|
21
|
+
from .nonzero import TensorNonzero, nonzero
|
|
22
|
+
from .setitem import TensorIndexSetValue
|
|
23
|
+
from .slice import TensorSlice
|
|
24
|
+
from .take import take
|
|
25
|
+
from .unravel_index import TensorUnravelIndex, unravel_index
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _install():
|
|
29
|
+
from ..core import Tensor, TensorData
|
|
30
|
+
from .getitem import _getitem
|
|
31
|
+
from .setitem import _setitem
|
|
32
|
+
|
|
33
|
+
setattr(Tensor, "__getitem__", _getitem)
|
|
34
|
+
setattr(TensorData, "__getitem__", _getitem)
|
|
35
|
+
setattr(Tensor, "__setitem__", _setitem)
|
|
36
|
+
setattr(Tensor, "take", take)
|
|
37
|
+
setattr(
|
|
38
|
+
Tensor,
|
|
39
|
+
"compress",
|
|
40
|
+
lambda a, condition, axis=None: compress(condition, a, axis=axis),
|
|
41
|
+
)
|
|
42
|
+
setattr(Tensor, "choose", choose)
|
|
43
|
+
setattr(Tensor, "nonzero", nonzero)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
_install()
|
|
47
|
+
del _install
|