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,169 @@
|
|
|
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_order
|
|
22
|
+
from .array import tensor
|
|
23
|
+
from .core import TensorLike, TensorNoInput
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class TensorEmptyBase(object):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
def __init__(self, *args, **kwargs):
|
|
30
|
+
super().__init__(*args, **kwargs)
|
|
31
|
+
self._gen_rand()
|
|
32
|
+
|
|
33
|
+
def _gen_rand(self):
|
|
34
|
+
if getattr(self, "_rand", None) is None:
|
|
35
|
+
self._obj_set("_rand", np.random.random())
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class TensorEmpty(TensorEmptyBase, TensorNoInput):
|
|
39
|
+
__slots__ = ("_rand",)
|
|
40
|
+
_op_type_ = opcodes.TENSOR_EMPTY
|
|
41
|
+
|
|
42
|
+
order = StringField("order", default=None)
|
|
43
|
+
|
|
44
|
+
def __init__(self, dtype=None, **kw):
|
|
45
|
+
dtype = np.dtype(dtype or "f8")
|
|
46
|
+
super().__init__(dtype=dtype, **kw)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def empty(shape, dtype=None, chunk_size=None, gpu=None, order="C"):
|
|
50
|
+
"""
|
|
51
|
+
Return a new tensor of given shape and type, without initializing entries.
|
|
52
|
+
|
|
53
|
+
Parameters
|
|
54
|
+
----------
|
|
55
|
+
shape : int or tuple of int
|
|
56
|
+
Shape of the empty tensor
|
|
57
|
+
dtype : data-type, optional
|
|
58
|
+
Desired output data-type.
|
|
59
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
60
|
+
Desired chunk size on each dimension
|
|
61
|
+
gpu : bool, optional
|
|
62
|
+
Allocate the tensor on GPU if True, False as default
|
|
63
|
+
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 uninitialized (arbitrary) data of the given shape, dtype, and
|
|
72
|
+
order. Object arrays will be initialized to None.
|
|
73
|
+
|
|
74
|
+
See Also
|
|
75
|
+
--------
|
|
76
|
+
empty_like, zeros, ones
|
|
77
|
+
|
|
78
|
+
Notes
|
|
79
|
+
-----
|
|
80
|
+
`empty`, unlike `zeros`, does not set the array values to zero,
|
|
81
|
+
and may therefore be marginally faster. On the other hand, it requires
|
|
82
|
+
the user to manually set all the values in the array, and should be
|
|
83
|
+
used with caution.
|
|
84
|
+
|
|
85
|
+
Examples
|
|
86
|
+
--------
|
|
87
|
+
>>> import maxframe.tensor as mt
|
|
88
|
+
>>> mt.empty([2, 2]).execute()
|
|
89
|
+
array([[ -9.74499359e+001, 6.69583040e-309],
|
|
90
|
+
[ 2.13182611e-314, 3.06959433e-309]]) #random
|
|
91
|
+
>>> mt.empty([2, 2], dtype=int).execute()
|
|
92
|
+
array([[-1073741821, -1067949133],
|
|
93
|
+
[ 496041986, 19249760]]) #random
|
|
94
|
+
"""
|
|
95
|
+
tensor_order = get_order(
|
|
96
|
+
order,
|
|
97
|
+
None,
|
|
98
|
+
available_options="CF",
|
|
99
|
+
err_msg="only 'C' or 'F' order is permitted",
|
|
100
|
+
)
|
|
101
|
+
op = TensorEmpty(dtype=dtype, gpu=gpu, order=order)
|
|
102
|
+
return op(shape, chunk_size=chunk_size, order=tensor_order)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class TensorEmptyLike(TensorEmptyBase, TensorLike):
|
|
106
|
+
__slots__ = ("_rand",)
|
|
107
|
+
_op_type_ = opcodes.TENSOR_EMPTY_LIKE
|
|
108
|
+
|
|
109
|
+
_input = KeyField("input")
|
|
110
|
+
order = StringField("order", default=None)
|
|
111
|
+
|
|
112
|
+
def __init__(self, dtype=None, gpu=None, sparse=False, **kw):
|
|
113
|
+
dtype = np.dtype(dtype) if dtype is not None else None
|
|
114
|
+
super().__init__(dtype=dtype, gpu=gpu, sparse=sparse, **kw)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def empty_like(a, dtype=None, gpu=None, order="K"):
|
|
118
|
+
"""
|
|
119
|
+
Return a new tensor with the same shape and type as a given tensor.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
a : array_like
|
|
124
|
+
The shape and data-type of `a` define these same attributes of the
|
|
125
|
+
returned tensor.
|
|
126
|
+
dtype : data-type, optional
|
|
127
|
+
Overrides the data type of the result.
|
|
128
|
+
gpu : bool, optional
|
|
129
|
+
Allocate the tensor on GPU if True, None as default
|
|
130
|
+
order : {'C', 'F', 'A', or 'K'}, optional
|
|
131
|
+
Overrides the memory layout of the result. 'C' means C-order,
|
|
132
|
+
'F' means F-order, 'A' means 'F' if ``prototype`` is Fortran
|
|
133
|
+
contiguous, 'C' otherwise. 'K' means match the layout of ``prototype``
|
|
134
|
+
as closely as possible.
|
|
135
|
+
|
|
136
|
+
Returns
|
|
137
|
+
-------
|
|
138
|
+
out : Tensor
|
|
139
|
+
Array of uninitialized (arbitrary) data with the same
|
|
140
|
+
shape and type as `a`.
|
|
141
|
+
See Also
|
|
142
|
+
--------
|
|
143
|
+
ones_like : Return a tensor of ones with shape and type of input.
|
|
144
|
+
zeros_like : Return a tensor of zeros with shape and type of input.
|
|
145
|
+
empty : Return a new uninitialized tensor.
|
|
146
|
+
ones : Return a new tensor setting values to one.
|
|
147
|
+
zeros : Return a new tensor setting values to zero.
|
|
148
|
+
Notes
|
|
149
|
+
-----
|
|
150
|
+
This function does *not* initialize the returned tensor; to do that use
|
|
151
|
+
`zeros_like` or `ones_like` instead. It may be marginally faster than
|
|
152
|
+
the functions that do set the array values.
|
|
153
|
+
Examples
|
|
154
|
+
--------
|
|
155
|
+
>>> import maxframe.tensor as mt
|
|
156
|
+
>>> a = ([1,2,3], [4,5,6]) # a is array-like
|
|
157
|
+
>>> mt.empty_like(a).execute()
|
|
158
|
+
array([[-1073741821, -1073741821, 3], #ranm
|
|
159
|
+
[ 0, 0, -1073741821]])
|
|
160
|
+
>>> a = mt.array([[1., 2., 3.],[4.,5.,6.]])
|
|
161
|
+
>>> mt.empty_like(a).execute()
|
|
162
|
+
array([[ -2.00000715e+000, 1.48219694e-323, -2.00000572e+000],#random
|
|
163
|
+
[ 4.38791518e-305, -2.00000715e+000, 4.17269252e-309]])
|
|
164
|
+
"""
|
|
165
|
+
a = tensor(a)
|
|
166
|
+
tensor_order = get_order(order, a.order)
|
|
167
|
+
gpu = a.op.gpu if gpu is None else gpu
|
|
168
|
+
op = TensorEmptyLike(dtype=dtype, gpu=gpu, sparse=a.issparse(), order=order)
|
|
169
|
+
return op(a, order=tensor_order)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...serialization.serializables import BoolField, KeyField
|
|
19
|
+
from ..core import TensorOrder
|
|
20
|
+
from ..utils import to_numpy
|
|
21
|
+
from .core import TensorHasInput
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TensorFromDataFrame(TensorHasInput):
|
|
25
|
+
"""represent tensor from DataFrame"""
|
|
26
|
+
|
|
27
|
+
_op_type_ = opcodes.TENSOR_FROM_DATAFRAME
|
|
28
|
+
_input = KeyField("_input")
|
|
29
|
+
extract_multi_index = BoolField("extract_multi_index", default=None)
|
|
30
|
+
|
|
31
|
+
def __call__(self, a, order=None):
|
|
32
|
+
from ...dataframe.core import INDEX_TYPE, IndexValue
|
|
33
|
+
|
|
34
|
+
if (
|
|
35
|
+
self.extract_multi_index
|
|
36
|
+
and isinstance(a, INDEX_TYPE)
|
|
37
|
+
and isinstance(a.index_value.value, IndexValue.MultiIndex)
|
|
38
|
+
):
|
|
39
|
+
order = a.order if order is None else order
|
|
40
|
+
return self.new_tensor(
|
|
41
|
+
[a], (a.shape[0], len(a.index_value.value.names)), order=order
|
|
42
|
+
)
|
|
43
|
+
else:
|
|
44
|
+
self.extract_multi_index = False
|
|
45
|
+
|
|
46
|
+
return super().__call__(a, order=order)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def from_dataframe(in_df, dtype=None):
|
|
50
|
+
from ...dataframe.utils import build_empty_df
|
|
51
|
+
|
|
52
|
+
if dtype is None:
|
|
53
|
+
empty_pdf = build_empty_df(in_df.dtypes)
|
|
54
|
+
dtype = to_numpy(empty_pdf).dtype
|
|
55
|
+
op = TensorFromDataFrame(dtype=dtype, gpu=in_df.op.gpu)
|
|
56
|
+
return op(in_df, order=TensorOrder.F_ORDER) # return tensor with F-order always
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def from_series(in_series, dtype=None):
|
|
60
|
+
op = TensorFromDataFrame(dtype=dtype or in_series.dtype, gpu=in_series.op.gpu)
|
|
61
|
+
return op(in_series, order=TensorOrder.F_ORDER) # return tensor with F-order always
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def from_index(in_index, dtype=None, extract_multi_index=False):
|
|
65
|
+
op = TensorFromDataFrame(
|
|
66
|
+
dtype=dtype or in_index.dtype,
|
|
67
|
+
gpu=in_index.op.gpu,
|
|
68
|
+
extract_multi_index=extract_multi_index,
|
|
69
|
+
)
|
|
70
|
+
return op(in_index, order=TensorOrder.F_ORDER) # return tensor with F-order always
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
from collections.abc import Iterable
|
|
18
|
+
from functools import reduce
|
|
19
|
+
from operator import and_
|
|
20
|
+
|
|
21
|
+
import pandas as pd
|
|
22
|
+
|
|
23
|
+
from ... import opcodes
|
|
24
|
+
from ...serialization.serializables import AnyField, KeyField
|
|
25
|
+
from .array import tensor
|
|
26
|
+
from .core import TensorHasInput
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class DenseToSparse(TensorHasInput):
|
|
30
|
+
_op_type_ = opcodes.DENSE_TO_SPARSE
|
|
31
|
+
|
|
32
|
+
_input = KeyField("input")
|
|
33
|
+
missing = AnyField("missing", default=None)
|
|
34
|
+
|
|
35
|
+
def __init__(self, **kw):
|
|
36
|
+
super().__init__(sparse=True, **kw)
|
|
37
|
+
|
|
38
|
+
@staticmethod
|
|
39
|
+
def _get_mask(data, missing):
|
|
40
|
+
if isinstance(missing, Iterable):
|
|
41
|
+
return reduce(and_, (DenseToSparse._get_mask(data, m) for m in missing))
|
|
42
|
+
elif pd.isna(missing):
|
|
43
|
+
return ~pd.isna(data)
|
|
44
|
+
else:
|
|
45
|
+
return data != missing
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def fromdense(a, missing=None):
|
|
49
|
+
a = tensor(a)
|
|
50
|
+
if a.issparse():
|
|
51
|
+
return a
|
|
52
|
+
|
|
53
|
+
op = DenseToSparse(dtype=a.dtype, gpu=a.op.gpu, missing=missing)
|
|
54
|
+
return op(a)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...serialization.serializables import AnyField, KeyField, StringField
|
|
19
|
+
from ..utils import get_order
|
|
20
|
+
from .array import tensor
|
|
21
|
+
from .core import TensorHasInput
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class SparseToDense(TensorHasInput):
|
|
25
|
+
_op_type_ = opcodes.SPARSE_TO_DENSE
|
|
26
|
+
|
|
27
|
+
_input = KeyField("input")
|
|
28
|
+
order = StringField("order", default=None)
|
|
29
|
+
fill_value = AnyField("fill_value", default=None)
|
|
30
|
+
|
|
31
|
+
def __init__(self, **kw):
|
|
32
|
+
super().__init__(sparse=False, **kw)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def fromsparse(a, order="C", fill_value=None):
|
|
36
|
+
a = tensor(a)
|
|
37
|
+
if not a.issparse():
|
|
38
|
+
return a.astype(a.dtype, order=order, copy=False)
|
|
39
|
+
|
|
40
|
+
tensor_order = get_order(
|
|
41
|
+
order,
|
|
42
|
+
None,
|
|
43
|
+
available_options="CF",
|
|
44
|
+
err_msg="only 'C' or 'F' order is permitted",
|
|
45
|
+
)
|
|
46
|
+
op = SparseToDense(dtype=a.dtype, gpu=a.op.gpu, order=order, fill_value=fill_value)
|
|
47
|
+
return op(a, order=tensor_order)
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
from ... import opcodes
|
|
20
|
+
from ...serialization.serializables import AnyField, KeyField, StringField
|
|
21
|
+
from ..utils import get_order
|
|
22
|
+
from .array import tensor
|
|
23
|
+
from .core import TensorLike, TensorNoInput
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class TensorFull(TensorNoInput):
|
|
27
|
+
_op_type_ = opcodes.TENSOR_FULL
|
|
28
|
+
|
|
29
|
+
fill_value = AnyField("fill_value", default=None)
|
|
30
|
+
order = StringField("order", default=None)
|
|
31
|
+
|
|
32
|
+
def __init__(self, fill_value=None, dtype=None, **kw):
|
|
33
|
+
if dtype is not None:
|
|
34
|
+
dtype = np.dtype(dtype)
|
|
35
|
+
if fill_value is not None:
|
|
36
|
+
fill_value = dtype.type(fill_value)
|
|
37
|
+
elif fill_value is not None:
|
|
38
|
+
dtype = np.array(fill_value).dtype
|
|
39
|
+
super().__init__(fill_value=fill_value, dtype=dtype, **kw)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def full(shape, fill_value, dtype=None, chunk_size=None, gpu=None, order="C"):
|
|
43
|
+
"""
|
|
44
|
+
Return a new tensor of given shape and type, filled with `fill_value`.
|
|
45
|
+
|
|
46
|
+
Parameters
|
|
47
|
+
----------
|
|
48
|
+
shape : int or sequence of ints
|
|
49
|
+
Shape of the new tensor, e.g., ``(2, 3)`` or ``2``.
|
|
50
|
+
fill_value : scalar
|
|
51
|
+
Fill value.
|
|
52
|
+
dtype : data-type, optional
|
|
53
|
+
The desired data-type for the tensor The default, `None`, means
|
|
54
|
+
`np.array(fill_value).dtype`.
|
|
55
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
56
|
+
Desired chunk size on each dimension
|
|
57
|
+
gpu : bool, optional
|
|
58
|
+
Allocate the tensor on GPU if True, False as default
|
|
59
|
+
order : {'C', 'F'}, optional
|
|
60
|
+
Whether to store multidimensional data in C- or Fortran-contiguous
|
|
61
|
+
(row- or column-wise) order in memory.
|
|
62
|
+
|
|
63
|
+
Returns
|
|
64
|
+
-------
|
|
65
|
+
out : Tensor
|
|
66
|
+
Tensor of `fill_value` with the given shape, dtype, and order.
|
|
67
|
+
|
|
68
|
+
See Also
|
|
69
|
+
--------
|
|
70
|
+
zeros_like : Return a tensor of zeros with shape and type of input.
|
|
71
|
+
ones_like : Return a tensor of ones with shape and type of input.
|
|
72
|
+
empty_like : Return an empty tensor with shape and type of input.
|
|
73
|
+
full_like : Fill a tensor with shape and type of input.
|
|
74
|
+
zeros : Return a new tensor setting values to zero.
|
|
75
|
+
ones : Return a new tensor setting values to one.
|
|
76
|
+
empty : Return a new uninitialized tensor.
|
|
77
|
+
|
|
78
|
+
Examples
|
|
79
|
+
--------
|
|
80
|
+
>>> import maxframe.tensor as mt
|
|
81
|
+
|
|
82
|
+
>>> mt.full((2, 2), mt.inf).execute()
|
|
83
|
+
array([[ inf, inf],
|
|
84
|
+
[ inf, inf]])
|
|
85
|
+
>>> mt.full((2, 2), 10).execute()
|
|
86
|
+
array([[10, 10],
|
|
87
|
+
[10, 10]])
|
|
88
|
+
|
|
89
|
+
"""
|
|
90
|
+
v = np.asarray(fill_value)
|
|
91
|
+
if len(v.shape) > 0:
|
|
92
|
+
from ..base import broadcast_to
|
|
93
|
+
|
|
94
|
+
return broadcast_to(
|
|
95
|
+
tensor(v, dtype=dtype, chunk_size=chunk_size, gpu=gpu, order=order), shape
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
tensor_order = get_order(
|
|
99
|
+
order,
|
|
100
|
+
None,
|
|
101
|
+
available_options="CF",
|
|
102
|
+
err_msg="only 'C' or 'F' order is permitted",
|
|
103
|
+
)
|
|
104
|
+
op = TensorFull(fill_value, dtype=dtype, gpu=gpu, order=order)
|
|
105
|
+
return op(shape, chunk_size=chunk_size, order=tensor_order)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class TensorFullLike(TensorLike):
|
|
109
|
+
_op_type_ = opcodes.TENSOR_FULL_LIKE
|
|
110
|
+
|
|
111
|
+
_input = KeyField("input")
|
|
112
|
+
fill_value = AnyField("fill_value", default=None)
|
|
113
|
+
order = StringField("order", default=None)
|
|
114
|
+
|
|
115
|
+
def __init__(self, fill_value=None, dtype=None, gpu=None, sparse=False, **kw):
|
|
116
|
+
if dtype is not None:
|
|
117
|
+
dtype = np.dtype(dtype)
|
|
118
|
+
if fill_value is not None:
|
|
119
|
+
fill_value = dtype.type(fill_value)
|
|
120
|
+
elif fill_value is not None:
|
|
121
|
+
dtype = np.array(fill_value).dtype
|
|
122
|
+
super().__init__(
|
|
123
|
+
fill_value=fill_value, dtype=dtype, gpu=gpu, sparse=sparse, **kw
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def full_like(a, fill_value, dtype=None, gpu=None, order="K"):
|
|
128
|
+
"""
|
|
129
|
+
Return a full tensor with the same shape and type as a given tensor.
|
|
130
|
+
|
|
131
|
+
Parameters
|
|
132
|
+
----------
|
|
133
|
+
a : array_like
|
|
134
|
+
The shape and data-type of `a` define these same attributes of
|
|
135
|
+
the returned tensor.
|
|
136
|
+
fill_value : scalar
|
|
137
|
+
Fill value.
|
|
138
|
+
dtype : data-type, optional
|
|
139
|
+
Overrides the data type of the result.
|
|
140
|
+
gpu : bool, optional
|
|
141
|
+
Allocate the tensor on GPU if True, None as default
|
|
142
|
+
order : {'C', 'F', 'A', or 'K'}, optional
|
|
143
|
+
Overrides the memory layout of the result. 'C' means C-order,
|
|
144
|
+
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
|
|
145
|
+
'C' otherwise. 'K' means match the layout of `a` as closely
|
|
146
|
+
as possible.
|
|
147
|
+
|
|
148
|
+
Returns
|
|
149
|
+
-------
|
|
150
|
+
out : Tensor
|
|
151
|
+
Tensor of `fill_value` with the same shape and type as `a`.
|
|
152
|
+
|
|
153
|
+
See Also
|
|
154
|
+
--------
|
|
155
|
+
empty_like : Return an empty tensor with shape and type of input.
|
|
156
|
+
ones_like : Return a tensor of ones with shape and type of input.
|
|
157
|
+
zeros_like : Return a tensor of zeros with shape and type of input.
|
|
158
|
+
full : Return a new tensor of given shape filled with value.
|
|
159
|
+
|
|
160
|
+
Examples
|
|
161
|
+
--------
|
|
162
|
+
>>> import maxframe.tensor as mt
|
|
163
|
+
>>> x = mt.arange(6, dtype=int)
|
|
164
|
+
>>> mt.full_like(x, 1).execute()
|
|
165
|
+
array([1, 1, 1, 1, 1, 1])
|
|
166
|
+
>>> mt.full_like(x, 0.1).execute()
|
|
167
|
+
array([0, 0, 0, 0, 0, 0])
|
|
168
|
+
>>> mt.full_like(x, 0.1, dtype=mt.double).execute()
|
|
169
|
+
array([ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
|
|
170
|
+
>>> mt.full_like(x, mt.nan, dtype=mt.double).execute()
|
|
171
|
+
array([ nan, nan, nan, nan, nan, nan])
|
|
172
|
+
|
|
173
|
+
>>> y = mt.arange(6, dtype=mt.double)
|
|
174
|
+
>>> mt.full_like(y, 0.1).execute()
|
|
175
|
+
array([ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
|
|
176
|
+
|
|
177
|
+
"""
|
|
178
|
+
a = tensor(a)
|
|
179
|
+
tensor_order = get_order(order, a.order)
|
|
180
|
+
if dtype is None:
|
|
181
|
+
dtype = a.dtype
|
|
182
|
+
gpu = a.op.gpu if gpu is None else gpu
|
|
183
|
+
op = TensorFullLike(
|
|
184
|
+
fill_value=fill_value, dtype=dtype, gpu=gpu, sparse=a.issparse()
|
|
185
|
+
)
|
|
186
|
+
return op(a, order=tensor_order)
|
|
@@ -0,0 +1,173 @@
|
|
|
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 (
|
|
21
|
+
AnyField,
|
|
22
|
+
FieldTypes,
|
|
23
|
+
KeyField,
|
|
24
|
+
StringField,
|
|
25
|
+
TupleField,
|
|
26
|
+
)
|
|
27
|
+
from ..utils import get_order
|
|
28
|
+
from .array import tensor
|
|
29
|
+
from .core import TensorLike, TensorNoInput
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class TensorOnes(TensorNoInput):
|
|
33
|
+
_op_type_ = opcodes.TENSOR_ONES
|
|
34
|
+
|
|
35
|
+
order = StringField("order")
|
|
36
|
+
shape = TupleField("shape", FieldTypes.int64)
|
|
37
|
+
chunk_size = AnyField("chunk_size")
|
|
38
|
+
|
|
39
|
+
def __init__(self, shape=None, **kwargs):
|
|
40
|
+
if type(shape) is int:
|
|
41
|
+
shape = (shape,)
|
|
42
|
+
super().__init__(shape=shape, **kwargs)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def ones(shape, dtype=None, chunk_size=None, gpu=None, order="C"):
|
|
46
|
+
"""
|
|
47
|
+
Return a new tensor of given shape and type, filled with ones.
|
|
48
|
+
|
|
49
|
+
Parameters
|
|
50
|
+
----------
|
|
51
|
+
shape : int or sequence of ints
|
|
52
|
+
Shape of the new tensor, e.g., ``(2, 3)`` or ``2``.
|
|
53
|
+
dtype : data-type, optional
|
|
54
|
+
The desired data-type for the tensor, e.g., `mt.int8`. Default is
|
|
55
|
+
`mt.float64`.
|
|
56
|
+
chunk_size : int or tuple of int or tuple of ints, optional
|
|
57
|
+
Desired chunk size on each dimension
|
|
58
|
+
gpu : bool, optional
|
|
59
|
+
Allocate the tensor on GPU if True, False as default
|
|
60
|
+
order : {'C', 'F'}, optional, default: C
|
|
61
|
+
Whether to store multi-dimensional data in row-major
|
|
62
|
+
(C-style) or column-major (Fortran-style) order in
|
|
63
|
+
memory.
|
|
64
|
+
|
|
65
|
+
Returns
|
|
66
|
+
-------
|
|
67
|
+
out : Tensor
|
|
68
|
+
Tensor of ones with the given shape, dtype, and order.
|
|
69
|
+
|
|
70
|
+
See Also
|
|
71
|
+
--------
|
|
72
|
+
zeros, ones_like
|
|
73
|
+
|
|
74
|
+
Examples
|
|
75
|
+
--------
|
|
76
|
+
>>> import maxframe.tensor as mt
|
|
77
|
+
|
|
78
|
+
>>> mt.ones(5).execute()
|
|
79
|
+
array([ 1., 1., 1., 1., 1.])
|
|
80
|
+
|
|
81
|
+
>>> mt.ones((5,), dtype=int).execute()
|
|
82
|
+
array([1, 1, 1, 1, 1])
|
|
83
|
+
|
|
84
|
+
>>> mt.ones((2, 1)).execute()
|
|
85
|
+
array([[ 1.],
|
|
86
|
+
[ 1.]])
|
|
87
|
+
|
|
88
|
+
>>> s = (2,2)
|
|
89
|
+
>>> mt.ones(s).execute()
|
|
90
|
+
array([[ 1., 1.],
|
|
91
|
+
[ 1., 1.]])
|
|
92
|
+
|
|
93
|
+
"""
|
|
94
|
+
tensor_order = get_order(
|
|
95
|
+
order,
|
|
96
|
+
None,
|
|
97
|
+
available_options="CF",
|
|
98
|
+
err_msg="only 'C' or 'F' order is permitted",
|
|
99
|
+
)
|
|
100
|
+
dtype = np.dtype(dtype or "f8")
|
|
101
|
+
op = TensorOnes(
|
|
102
|
+
dtype=dtype, shape=shape, chunk_size=chunk_size, gpu=gpu, order=order
|
|
103
|
+
)
|
|
104
|
+
return op(shape, chunk_size=chunk_size, order=tensor_order)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class TensorOnesLike(TensorLike):
|
|
108
|
+
_op_type_ = opcodes.TENSOR_ONES_LIKE
|
|
109
|
+
|
|
110
|
+
_input = KeyField("input")
|
|
111
|
+
|
|
112
|
+
def __init__(self, dtype=None, sparse=False, **kw):
|
|
113
|
+
dtype = np.dtype(dtype) if dtype is not None else None
|
|
114
|
+
super().__init__(dtype=dtype, sparse=sparse, **kw)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def ones_like(a, dtype=None, gpu=None, order="K"):
|
|
118
|
+
"""
|
|
119
|
+
Return a tensor of ones with the same shape and type as a given tensor.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
a : array_like
|
|
124
|
+
The shape and data-type of `a` define these same attributes of
|
|
125
|
+
the returned tensor.
|
|
126
|
+
dtype : data-type, optional
|
|
127
|
+
Overrides the data type of the result.
|
|
128
|
+
gpu : bool, optional
|
|
129
|
+
Allocate the tensor on GPU if True, None as default
|
|
130
|
+
order : {'C', 'F', 'A', or 'K'}, optional
|
|
131
|
+
Overrides the memory layout of the result. 'C' means C-order,
|
|
132
|
+
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
|
|
133
|
+
'C' otherwise. 'K' means match the layout of `a` as closely
|
|
134
|
+
as possible.
|
|
135
|
+
|
|
136
|
+
Returns
|
|
137
|
+
-------
|
|
138
|
+
out : Tensor
|
|
139
|
+
Tensor of ones with the same shape and type as `a`.
|
|
140
|
+
|
|
141
|
+
See Also
|
|
142
|
+
--------
|
|
143
|
+
zeros_like : Return a tensor of zeros with shape and type of input.
|
|
144
|
+
empty_like : Return a empty tensor with shape and type of input.
|
|
145
|
+
zeros : Return a new tensor setting values to zero.
|
|
146
|
+
ones : Return a new tensor setting values to one.
|
|
147
|
+
empty : Return a new uninitialized tensor.
|
|
148
|
+
|
|
149
|
+
Examples
|
|
150
|
+
--------
|
|
151
|
+
>>> import maxframe.tensor as mt
|
|
152
|
+
|
|
153
|
+
>>> x = mt.arange(6)
|
|
154
|
+
>>> x = x.reshape((2, 3))
|
|
155
|
+
>>> x.execute()
|
|
156
|
+
array([[0, 1, 2],
|
|
157
|
+
[3, 4, 5]])
|
|
158
|
+
>>> mt.ones_like(x).execute()
|
|
159
|
+
array([[1, 1, 1],
|
|
160
|
+
[1, 1, 1]])
|
|
161
|
+
|
|
162
|
+
>>> y = mt.arange(3, dtype=float)
|
|
163
|
+
>>> y.execute()
|
|
164
|
+
array([ 0., 1., 2.])
|
|
165
|
+
>>> mt.ones_like(y).execute()
|
|
166
|
+
array([ 1., 1., 1.])
|
|
167
|
+
|
|
168
|
+
"""
|
|
169
|
+
a = tensor(a)
|
|
170
|
+
tensor_order = get_order(order, a.order)
|
|
171
|
+
gpu = a.op.gpu if gpu is None else gpu
|
|
172
|
+
op = TensorOnesLike(dtype=dtype, gpu=gpu, sparse=a.issparse(), order=order)
|
|
173
|
+
return op(a, order=tensor_order)
|