maxframe 0.1.0b5__cp310-cp310-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-310-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-310-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-310-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-310-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 +3 -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,186 @@
|
|
|
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 collections import defaultdict
|
|
16
|
+
from contextlib import contextmanager
|
|
17
|
+
|
|
18
|
+
import numpy as np
|
|
19
|
+
|
|
20
|
+
from ..lib import sparse
|
|
21
|
+
from ..lib.sparse.core import get_dense_module, issparse
|
|
22
|
+
from ..utils import lazy_import
|
|
23
|
+
|
|
24
|
+
cp = lazy_import("cupy", rename="cp")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def is_array(x):
|
|
28
|
+
if isinstance(x, np.ndarray):
|
|
29
|
+
return True
|
|
30
|
+
elif isinstance(x, (sparse.SparseMatrix, sparse.SparseVector)):
|
|
31
|
+
return True
|
|
32
|
+
elif cp: # pragma: no cover
|
|
33
|
+
return isinstance(x, cp.ndarray)
|
|
34
|
+
else:
|
|
35
|
+
return False
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def is_cupy(x):
|
|
39
|
+
if cp and isinstance(x, cp.ndarray): # pragma: no cover
|
|
40
|
+
return True
|
|
41
|
+
else:
|
|
42
|
+
return False
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def get_array_module(x, nosparse=False):
|
|
46
|
+
if issparse(x):
|
|
47
|
+
if nosparse:
|
|
48
|
+
return get_dense_module(x)
|
|
49
|
+
return sparse
|
|
50
|
+
if cp:
|
|
51
|
+
return cp.get_array_module(x)
|
|
52
|
+
return np
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def array_module(gpu):
|
|
56
|
+
if gpu:
|
|
57
|
+
if cp is None:
|
|
58
|
+
raise ImportError("Execute on GPU requires for `cupy` library")
|
|
59
|
+
return cp
|
|
60
|
+
|
|
61
|
+
return np
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _get(x):
|
|
65
|
+
m = get_array_module(x)
|
|
66
|
+
|
|
67
|
+
if m is np:
|
|
68
|
+
return x
|
|
69
|
+
if m is sparse:
|
|
70
|
+
return x if not hasattr(x, "get") else x.get()
|
|
71
|
+
return x.get()
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def move_to_device(x, device_id):
|
|
75
|
+
if hasattr(x, "device") and x.device.id == device_id:
|
|
76
|
+
return x
|
|
77
|
+
|
|
78
|
+
assert device_id >= 0
|
|
79
|
+
|
|
80
|
+
if issparse(x) and device_id > 0:
|
|
81
|
+
raise NotImplementedError
|
|
82
|
+
|
|
83
|
+
# for dense array, we currently copy from gpu to memory and then copy back to destination device
|
|
84
|
+
# to avoid kernel panic
|
|
85
|
+
with cp.cuda.Device(device_id):
|
|
86
|
+
return cp.asarray(cp.asnumpy(x)) # remove `cp.asnumpy` call to do directly copy
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def convert_order(x, order):
|
|
90
|
+
xp = get_array_module(x)
|
|
91
|
+
if xp.isfortran(x) != (order == "F"):
|
|
92
|
+
x = xp.array(x, order=order)
|
|
93
|
+
return x
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _most_nbytes_device(device_nbytes):
|
|
97
|
+
device_to_nbytes = defaultdict(lambda: 0)
|
|
98
|
+
for device, nbytes in device_nbytes:
|
|
99
|
+
device_to_nbytes[device] += nbytes
|
|
100
|
+
return max(device_to_nbytes, key=lambda i: device_to_nbytes[i])
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _is_array_writeable(a):
|
|
104
|
+
if hasattr(a, "flags") and hasattr(a.flags, "writeable"):
|
|
105
|
+
return a.flags.writeable
|
|
106
|
+
# writeable as default
|
|
107
|
+
return True
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def as_same_device(inputs, device=None, ret_extra=False, copy_if_not_writeable=False):
|
|
111
|
+
input_tensors = [
|
|
112
|
+
i for i in inputs if hasattr(i, "ndim") and i.ndim > 0
|
|
113
|
+
] # filter scalar
|
|
114
|
+
has_sparse = any(issparse(i) for i in inputs)
|
|
115
|
+
|
|
116
|
+
if device is None:
|
|
117
|
+
try:
|
|
118
|
+
device = _most_nbytes_device(
|
|
119
|
+
(i.device.id if hasattr(i, "device") else -1, i.nbytes)
|
|
120
|
+
for i in input_tensors
|
|
121
|
+
)
|
|
122
|
+
except ValueError:
|
|
123
|
+
device = -1
|
|
124
|
+
|
|
125
|
+
if device == -1:
|
|
126
|
+
outputs = [_get(i) for i in inputs]
|
|
127
|
+
else:
|
|
128
|
+
outputs = [move_to_device(i, device) for i in inputs]
|
|
129
|
+
|
|
130
|
+
if copy_if_not_writeable:
|
|
131
|
+
new_outputs = []
|
|
132
|
+
for out in outputs:
|
|
133
|
+
if not _is_array_writeable(out):
|
|
134
|
+
new_outputs.append(out.copy())
|
|
135
|
+
elif isinstance(out, (sparse.SparseMatrix, sparse.SparseVector)):
|
|
136
|
+
if (
|
|
137
|
+
not _is_array_writeable(out.data)
|
|
138
|
+
or not _is_array_writeable(out.indices)
|
|
139
|
+
or not _is_array_writeable(out.indptr)
|
|
140
|
+
):
|
|
141
|
+
new_outputs.append(type(out)(out.spmatrix.copy(), shape=out.shape))
|
|
142
|
+
else:
|
|
143
|
+
new_outputs.append(out)
|
|
144
|
+
else:
|
|
145
|
+
new_outputs.append(out)
|
|
146
|
+
outputs = new_outputs
|
|
147
|
+
|
|
148
|
+
if not ret_extra:
|
|
149
|
+
return outputs
|
|
150
|
+
|
|
151
|
+
if has_sparse:
|
|
152
|
+
m = sparse
|
|
153
|
+
else:
|
|
154
|
+
if len(input_tensors) > 0:
|
|
155
|
+
m = get_array_module(input_tensors[0])
|
|
156
|
+
else:
|
|
157
|
+
m = np
|
|
158
|
+
return outputs, device, m
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def as_np_array(x):
|
|
162
|
+
xp = get_array_module(x)
|
|
163
|
+
return x if xp == np else x.get()
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def is_sparse_module(xp):
|
|
167
|
+
return xp is sparse
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@contextmanager
|
|
171
|
+
def device(device_id):
|
|
172
|
+
if device_id is None or device_id < 0:
|
|
173
|
+
yield
|
|
174
|
+
else: # pragma: no cover
|
|
175
|
+
with cp.cuda.Device(device_id) as dev:
|
|
176
|
+
yield dev
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def create_array(op):
|
|
180
|
+
xp = array_module(op.gpu)
|
|
181
|
+
|
|
182
|
+
def inner(func, *args, **kwargs):
|
|
183
|
+
with device(op.device):
|
|
184
|
+
return getattr(xp, func)(*args, **kwargs)
|
|
185
|
+
|
|
186
|
+
return inner
|
|
@@ -0,0 +1,34 @@
|
|
|
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 .astype import TensorAstype
|
|
16
|
+
from .atleast_1d import atleast_1d
|
|
17
|
+
from .broadcast_to import TensorBroadcastTo, broadcast_to
|
|
18
|
+
from .ravel import ravel
|
|
19
|
+
from .transpose import transpose
|
|
20
|
+
from .unique import unique
|
|
21
|
+
from .where import TensorWhere, where
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _install():
|
|
25
|
+
from ..core import Tensor, TensorData
|
|
26
|
+
from .astype import _astype
|
|
27
|
+
|
|
28
|
+
for cls in (Tensor, TensorData):
|
|
29
|
+
setattr(cls, "astype", _astype)
|
|
30
|
+
setattr(cls, "ravel", ravel)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
_install()
|
|
34
|
+
del _install
|
|
@@ -0,0 +1,119 @@
|
|
|
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 KeyField, StringField
|
|
21
|
+
from ...utils import get_dtype
|
|
22
|
+
from ..operators import TensorHasInput, TensorOperatorMixin
|
|
23
|
+
from ..utils import get_order
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class TensorAstype(TensorHasInput, TensorOperatorMixin):
|
|
27
|
+
_op_type_ = opcodes.ASTYPE
|
|
28
|
+
|
|
29
|
+
_input = KeyField("input")
|
|
30
|
+
order = StringField("order", default=None)
|
|
31
|
+
casting = StringField("casting", default=None)
|
|
32
|
+
|
|
33
|
+
def __init__(self, dtype=None, sparse=False, **kw):
|
|
34
|
+
super().__init__(dtype=dtype, sparse=sparse, **kw)
|
|
35
|
+
|
|
36
|
+
def _set_inputs(self, inputs):
|
|
37
|
+
super()._set_inputs(inputs)
|
|
38
|
+
self._input = self._inputs[0]
|
|
39
|
+
|
|
40
|
+
def __call__(self, tensor, order=None):
|
|
41
|
+
return self.new_tensor([tensor], tensor.shape, order=order)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _astype(tensor, dtype, order="K", casting="unsafe", copy=True):
|
|
45
|
+
"""
|
|
46
|
+
Copy of the tensor, cast to a specified type.
|
|
47
|
+
|
|
48
|
+
Parameters
|
|
49
|
+
----------
|
|
50
|
+
dtype : str or dtype
|
|
51
|
+
Typecode or data-type to which the array is cast.
|
|
52
|
+
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
|
|
53
|
+
Controls what kind of data casting may occur. Defaults to 'unsafe'
|
|
54
|
+
for backwards compatibility.
|
|
55
|
+
* 'no' means the data types should not be cast at all.
|
|
56
|
+
* 'equiv' means only byte-order changes are allowed.
|
|
57
|
+
* 'safe' means only casts which can preserve values are allowed.
|
|
58
|
+
* 'same_kind' means only safe casts or casts within a kind,
|
|
59
|
+
like float64 to float32, are allowed.
|
|
60
|
+
* 'unsafe' means any data conversions may be done.
|
|
61
|
+
order : {'C', 'F', 'A', 'K'}, optional
|
|
62
|
+
Controls the memory layout order of the result.
|
|
63
|
+
'C' means C order, 'F' means Fortran order, 'A'
|
|
64
|
+
means 'F' order if all the arrays are Fortran contiguous,
|
|
65
|
+
'C' order otherwise, and 'K' means as close to the
|
|
66
|
+
order the array elements appear in memory as possible.
|
|
67
|
+
Default is 'K'.
|
|
68
|
+
copy : bool, optional
|
|
69
|
+
By default, astype always returns a newly allocated array. If this
|
|
70
|
+
is set to false, and the `dtype`, `order`, and `subok`
|
|
71
|
+
requirements are satisfied, the input array is returned instead
|
|
72
|
+
of a copy.
|
|
73
|
+
|
|
74
|
+
Returns
|
|
75
|
+
-------
|
|
76
|
+
arr_t : Tensor
|
|
77
|
+
Unless `copy` is False and the other conditions for returning the input
|
|
78
|
+
array are satisfied (see description for `copy` input parameter), `arr_t`
|
|
79
|
+
is a new tensor of the same shape as the input array, with dtype, order
|
|
80
|
+
given by `dtype`, `order`.
|
|
81
|
+
|
|
82
|
+
Notes
|
|
83
|
+
-----
|
|
84
|
+
astype method returns an error if the string
|
|
85
|
+
dtype to cast to is not long enough in 'safe' casting mode to hold the max
|
|
86
|
+
value of integer/float array that is being casted. Previously the casting
|
|
87
|
+
was allowed even if the result was truncated.
|
|
88
|
+
|
|
89
|
+
Raises
|
|
90
|
+
------
|
|
91
|
+
ComplexWarning
|
|
92
|
+
When casting from complex to float or int. To avoid this,
|
|
93
|
+
one should use ``a.real.astype(t)``.
|
|
94
|
+
|
|
95
|
+
Examples
|
|
96
|
+
--------
|
|
97
|
+
>>> import maxframe.tensor as mt
|
|
98
|
+
>>> x = mt.array([1, 2, 2.5])
|
|
99
|
+
>>> x.execute()
|
|
100
|
+
array([ 1. , 2. , 2.5])
|
|
101
|
+
|
|
102
|
+
>>> x.astype(int).execute()
|
|
103
|
+
array([1, 2, 2])
|
|
104
|
+
"""
|
|
105
|
+
dtype = get_dtype(dtype)
|
|
106
|
+
tensor_order = get_order(order, tensor.order)
|
|
107
|
+
|
|
108
|
+
if tensor.dtype == dtype and tensor.order == tensor_order:
|
|
109
|
+
return tensor if not copy else tensor.copy(order=order)
|
|
110
|
+
elif not np.can_cast(tensor.dtype, dtype, casting=casting):
|
|
111
|
+
raise TypeError(
|
|
112
|
+
f"Cannot cast array from {tensor.dtype!r} to {dtype!r} "
|
|
113
|
+
f"according to the rule {casting}"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
op = TensorAstype(
|
|
117
|
+
dtype=dtype, order=order, casting=casting, sparse=tensor.issparse()
|
|
118
|
+
)
|
|
119
|
+
return op(tensor, order=tensor_order)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2021 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 ...core import ExecutableTuple
|
|
20
|
+
from ..datasource import tensor as astensor
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def atleast_1d(*tensors):
|
|
24
|
+
"""
|
|
25
|
+
Convert inputs to tensors with at least one dimension.
|
|
26
|
+
|
|
27
|
+
Scalar inputs are converted to 1-dimensional tensors, whilst
|
|
28
|
+
higher-dimensional inputs are preserved.
|
|
29
|
+
|
|
30
|
+
Parameters
|
|
31
|
+
----------
|
|
32
|
+
tensors1, tensors2, ... : array_like
|
|
33
|
+
One or more input tensors.
|
|
34
|
+
|
|
35
|
+
Returns
|
|
36
|
+
-------
|
|
37
|
+
ret : Tensor
|
|
38
|
+
An tensor, or list of tensors, each with ``a.ndim >= 1``.
|
|
39
|
+
Copies are made only if necessary.
|
|
40
|
+
|
|
41
|
+
See Also
|
|
42
|
+
--------
|
|
43
|
+
atleast_2d, atleast_3d
|
|
44
|
+
|
|
45
|
+
Examples
|
|
46
|
+
--------
|
|
47
|
+
>>> import maxframe.tensor as mt
|
|
48
|
+
|
|
49
|
+
>>> mt.atleast_1d(1.0).execute()
|
|
50
|
+
array([ 1.])
|
|
51
|
+
|
|
52
|
+
>>> x = mt.arange(9.0).reshape(3,3)
|
|
53
|
+
>>> mt.atleast_1d(x).execute()
|
|
54
|
+
array([[ 0., 1., 2.],
|
|
55
|
+
[ 3., 4., 5.],
|
|
56
|
+
[ 6., 7., 8.]])
|
|
57
|
+
>>> mt.atleast_1d(x) is x
|
|
58
|
+
True
|
|
59
|
+
|
|
60
|
+
>>> mt.atleast_1d(1, [3, 4]).execute()
|
|
61
|
+
[array([1]), array([3, 4])]
|
|
62
|
+
|
|
63
|
+
"""
|
|
64
|
+
new_tensors = []
|
|
65
|
+
for x in tensors:
|
|
66
|
+
x = astensor(x)
|
|
67
|
+
if x.ndim == 0:
|
|
68
|
+
x = x[np.newaxis]
|
|
69
|
+
|
|
70
|
+
new_tensors.append(x)
|
|
71
|
+
|
|
72
|
+
if len(new_tensors) == 1:
|
|
73
|
+
return new_tensors[0]
|
|
74
|
+
return ExecutableTuple(new_tensors)
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
import numpy as np
|
|
16
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...serialization.serializables import KeyField, TupleField
|
|
19
|
+
from ..datasource import tensor as astensor
|
|
20
|
+
from ..operators import TensorHasInput, TensorOperatorMixin
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class TensorBroadcastTo(TensorHasInput, TensorOperatorMixin):
|
|
24
|
+
_op_type_ = opcodes.BROADCAST_TO
|
|
25
|
+
|
|
26
|
+
_input = KeyField("input")
|
|
27
|
+
shape = TupleField("shape", default=None)
|
|
28
|
+
|
|
29
|
+
def __call__(self, tensor, shape):
|
|
30
|
+
return self.new_tensor([tensor], shape)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def broadcast_to(tensor, shape):
|
|
34
|
+
"""Broadcast a tensor to a new shape.
|
|
35
|
+
|
|
36
|
+
Parameters
|
|
37
|
+
----------
|
|
38
|
+
tensor : array_like
|
|
39
|
+
The tensor to broadcast.
|
|
40
|
+
shape : tuple
|
|
41
|
+
The shape of the desired array.
|
|
42
|
+
|
|
43
|
+
Returns
|
|
44
|
+
-------
|
|
45
|
+
broadcast : Tensor
|
|
46
|
+
|
|
47
|
+
Raises
|
|
48
|
+
------
|
|
49
|
+
ValueError
|
|
50
|
+
If the tensor is not compatible with the new shape according to MaxFrame's
|
|
51
|
+
broadcasting rules.
|
|
52
|
+
|
|
53
|
+
Examples
|
|
54
|
+
--------
|
|
55
|
+
>>> import maxframe.tensor as mt
|
|
56
|
+
|
|
57
|
+
>>> x = mt.array([1, 2, 3])
|
|
58
|
+
>>> mt.broadcast_to(x, (3, 3)).execute()
|
|
59
|
+
array([[1, 2, 3],
|
|
60
|
+
[1, 2, 3],
|
|
61
|
+
[1, 2, 3]])
|
|
62
|
+
"""
|
|
63
|
+
from ..core import Tensor
|
|
64
|
+
|
|
65
|
+
tensor = tensor if isinstance(tensor, Tensor) else astensor(tensor)
|
|
66
|
+
shape = tuple(shape) if isinstance(shape, (list, tuple)) else (shape,)
|
|
67
|
+
|
|
68
|
+
if any(np.isnan(s) for s in tensor.shape):
|
|
69
|
+
raise ValueError(
|
|
70
|
+
"input tensor has unknown shape, need to call `.execute()` first"
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
if tensor.shape == shape:
|
|
74
|
+
return tensor
|
|
75
|
+
|
|
76
|
+
new_ndim = len(shape) - tensor.ndim
|
|
77
|
+
if new_ndim < 0:
|
|
78
|
+
raise ValueError(
|
|
79
|
+
"input operator has more dimensions than allowed by the axis remapping"
|
|
80
|
+
)
|
|
81
|
+
if any(o != n for o, n in zip(tensor.shape, shape[new_ndim:]) if o != 1):
|
|
82
|
+
raise ValueError(
|
|
83
|
+
"operators could not be broadcast together "
|
|
84
|
+
f"with remapped shapes [original->remapped]: {tensor.shape} "
|
|
85
|
+
f"and requested shape {shape}"
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
op = TensorBroadcastTo(shape, dtype=tensor.dtype, sparse=tensor.issparse())
|
|
89
|
+
return op(tensor, shape)
|
|
@@ -0,0 +1,92 @@
|
|
|
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 ..datasource import tensor as astensor
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def ravel(a, order="C"):
|
|
23
|
+
"""Return a contiguous flattened tensor.
|
|
24
|
+
|
|
25
|
+
A 1-D tensor, containing the elements of the input, is returned. A copy is
|
|
26
|
+
made only if needed.
|
|
27
|
+
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
a : array_like
|
|
31
|
+
Input tensor. The elements in `a` are packed as a 1-D tensor.
|
|
32
|
+
order : {'C','F', 'A', 'K'}, optional
|
|
33
|
+
|
|
34
|
+
The elements of `a` are read using this index order. 'C' means
|
|
35
|
+
to index the elements in row-major, C-style order,
|
|
36
|
+
with the last axis index changing fastest, back to the first
|
|
37
|
+
axis index changing slowest. 'F' means to index the elements
|
|
38
|
+
in column-major, Fortran-style order, with the
|
|
39
|
+
first index changing fastest, and the last index changing
|
|
40
|
+
slowest. Note that the 'C' and 'F' options take no account of
|
|
41
|
+
the memory layout of the underlying array, and only refer to
|
|
42
|
+
the order of axis indexing. 'A' means to read the elements in
|
|
43
|
+
Fortran-like index order if `a` is Fortran *contiguous* in
|
|
44
|
+
memory, C-like order otherwise. 'K' means to read the
|
|
45
|
+
elements in the order they occur in memory, except for
|
|
46
|
+
reversing the data when strides are negative. By default, 'C'
|
|
47
|
+
index order is used.
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
y : array_like
|
|
52
|
+
If `a` is a matrix, y is a 1-D tensor, otherwise y is a tensor of
|
|
53
|
+
the same subtype as `a`. The shape of the returned array is
|
|
54
|
+
``(a.size,)``. Matrices are special cased for backward
|
|
55
|
+
compatibility.
|
|
56
|
+
|
|
57
|
+
See Also
|
|
58
|
+
--------
|
|
59
|
+
Tensor.flat : 1-D iterator over an array.
|
|
60
|
+
Tensor.flatten : 1-D array copy of the elements of an array
|
|
61
|
+
in row-major order.
|
|
62
|
+
Tensor.reshape : Change the shape of an array without changing its data.
|
|
63
|
+
|
|
64
|
+
Examples
|
|
65
|
+
--------
|
|
66
|
+
It is equivalent to ``reshape(-1)``.
|
|
67
|
+
|
|
68
|
+
>>> import maxframe.tensor as mt
|
|
69
|
+
|
|
70
|
+
>>> x = mt.array([[1, 2, 3], [4, 5, 6]])
|
|
71
|
+
>>> print(mt.ravel(x).execute())
|
|
72
|
+
[1 2 3 4 5 6]
|
|
73
|
+
|
|
74
|
+
>>> print(x.reshape(-1).execute())
|
|
75
|
+
[1 2 3 4 5 6]
|
|
76
|
+
|
|
77
|
+
>>> print(mt.ravel(x.T).execute())
|
|
78
|
+
[1 4 2 5 3 6]
|
|
79
|
+
|
|
80
|
+
>>> a = mt.arange(12).reshape(2,3,2).swapaxes(1,2); a.execute()
|
|
81
|
+
array([[[ 0, 2, 4],
|
|
82
|
+
[ 1, 3, 5]],
|
|
83
|
+
[[ 6, 8, 10],
|
|
84
|
+
[ 7, 9, 11]]])
|
|
85
|
+
>>> a.ravel().execute()
|
|
86
|
+
array([ 0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11])
|
|
87
|
+
|
|
88
|
+
"""
|
|
89
|
+
a = astensor(a)
|
|
90
|
+
if a.ndim == 0:
|
|
91
|
+
return a[np.newaxis]
|
|
92
|
+
return a.reshape(-1, order=order)
|
|
@@ -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.
|