maxframe 1.3.0__cp37-cp37m-win_amd64.whl → 2.0.0b1__cp37-cp37m-win_amd64.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/_utils.cp37-win_amd64.pyd +0 -0
- maxframe/_utils.pyi +21 -0
- maxframe/_utils.pyx +4 -3
- maxframe/codegen/__init__.py +27 -0
- maxframe/{codegen.py → codegen/core.py} +49 -43
- maxframe/codegen/spe/__init__.py +16 -0
- maxframe/codegen/spe/core.py +307 -0
- maxframe/codegen/spe/dataframe/__init__.py +37 -0
- maxframe/codegen/spe/dataframe/accessors/__init__.py +15 -0
- maxframe/codegen/spe/dataframe/accessors/base.py +53 -0
- maxframe/codegen/spe/dataframe/accessors/dict_.py +194 -0
- maxframe/codegen/spe/dataframe/accessors/list_.py +80 -0
- maxframe/codegen/spe/dataframe/arithmetic.py +84 -0
- maxframe/codegen/spe/dataframe/datasource.py +181 -0
- maxframe/codegen/spe/dataframe/datastore.py +204 -0
- maxframe/codegen/spe/dataframe/extensions.py +63 -0
- maxframe/codegen/spe/dataframe/fetch.py +26 -0
- maxframe/codegen/spe/dataframe/groupby.py +224 -0
- maxframe/codegen/spe/dataframe/indexing.py +238 -0
- maxframe/codegen/spe/dataframe/merge.py +73 -0
- maxframe/codegen/spe/dataframe/misc.py +286 -0
- maxframe/codegen/spe/dataframe/missing.py +64 -0
- maxframe/codegen/spe/dataframe/reduction.py +160 -0
- maxframe/codegen/spe/dataframe/sort.py +83 -0
- maxframe/codegen/spe/dataframe/statistics.py +46 -0
- maxframe/codegen/spe/dataframe/tests/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/accessors/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/accessors/test_base.py +33 -0
- maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +310 -0
- maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +137 -0
- maxframe/codegen/spe/dataframe/tests/indexing/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/indexing/conftest.py +58 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_getitem.py +124 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +76 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_indexing.py +39 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_rename.py +51 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_reset_index.py +88 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_sample.py +45 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_set_axis.py +45 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_set_index.py +41 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_setitem.py +46 -0
- maxframe/codegen/spe/dataframe/tests/misc/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_apply.py +133 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_drop_duplicates.py +92 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +234 -0
- maxframe/codegen/spe/dataframe/tests/missing/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_checkna.py +94 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_dropna.py +50 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_fillna.py +94 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_replace.py +45 -0
- maxframe/codegen/spe/dataframe/tests/test_arithmetic.py +73 -0
- maxframe/codegen/spe/dataframe/tests/test_datasource.py +184 -0
- maxframe/codegen/spe/dataframe/tests/test_datastore.py +200 -0
- maxframe/codegen/spe/dataframe/tests/test_extensions.py +88 -0
- maxframe/codegen/spe/dataframe/tests/test_groupby.py +225 -0
- maxframe/codegen/spe/dataframe/tests/test_merge.py +400 -0
- maxframe/codegen/spe/dataframe/tests/test_reduction.py +104 -0
- maxframe/codegen/spe/dataframe/tests/test_sort.py +159 -0
- maxframe/codegen/spe/dataframe/tests/test_statistics.py +70 -0
- maxframe/codegen/spe/dataframe/tests/test_tseries.py +29 -0
- maxframe/codegen/spe/dataframe/tests/test_value_counts.py +60 -0
- maxframe/codegen/spe/dataframe/tests/test_window.py +69 -0
- maxframe/codegen/spe/dataframe/tseries.py +46 -0
- maxframe/codegen/spe/dataframe/udf.py +62 -0
- maxframe/codegen/spe/dataframe/value_counts.py +31 -0
- maxframe/codegen/spe/dataframe/window.py +65 -0
- maxframe/codegen/spe/learn/__init__.py +15 -0
- maxframe/codegen/spe/learn/contrib/__init__.py +15 -0
- maxframe/codegen/spe/learn/contrib/lightgbm.py +160 -0
- maxframe/codegen/spe/learn/contrib/models.py +41 -0
- maxframe/codegen/spe/learn/contrib/pytorch.py +49 -0
- maxframe/codegen/spe/learn/contrib/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/contrib/tests/test_lightgbm.py +123 -0
- maxframe/codegen/spe/learn/contrib/tests/test_models.py +41 -0
- maxframe/codegen/spe/learn/contrib/tests/test_pytorch.py +53 -0
- maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +98 -0
- maxframe/codegen/spe/learn/contrib/xgboost.py +152 -0
- maxframe/codegen/spe/learn/metrics/__init__.py +15 -0
- maxframe/codegen/spe/learn/metrics/_classification.py +120 -0
- maxframe/codegen/spe/learn/metrics/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/metrics/tests/test_classification.py +93 -0
- maxframe/codegen/spe/learn/model_selection/__init__.py +13 -0
- maxframe/codegen/spe/learn/model_selection/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/model_selection/tests/test_split.py +41 -0
- maxframe/codegen/spe/learn/preprocessing/__init__.py +15 -0
- maxframe/codegen/spe/learn/preprocessing/_data.py +37 -0
- maxframe/codegen/spe/learn/preprocessing/_label.py +47 -0
- maxframe/codegen/spe/learn/preprocessing/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/preprocessing/tests/test_data.py +31 -0
- maxframe/codegen/spe/learn/preprocessing/tests/test_label.py +43 -0
- maxframe/codegen/spe/learn/utils/__init__.py +15 -0
- maxframe/codegen/spe/learn/utils/checks.py +55 -0
- maxframe/codegen/spe/learn/utils/multiclass.py +60 -0
- maxframe/codegen/spe/learn/utils/shuffle.py +85 -0
- maxframe/codegen/spe/learn/utils/sparsefuncs.py +35 -0
- maxframe/codegen/spe/learn/utils/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/utils/tests/test_checks.py +48 -0
- maxframe/codegen/spe/learn/utils/tests/test_multiclass.py +52 -0
- maxframe/codegen/spe/learn/utils/tests/test_shuffle.py +50 -0
- maxframe/codegen/spe/learn/utils/tests/test_sparsefuncs.py +34 -0
- maxframe/codegen/spe/learn/utils/tests/test_validation.py +44 -0
- maxframe/codegen/spe/learn/utils/validation.py +35 -0
- maxframe/codegen/spe/objects.py +26 -0
- maxframe/codegen/spe/remote.py +29 -0
- maxframe/codegen/spe/tensor/__init__.py +28 -0
- maxframe/codegen/spe/tensor/arithmetic.py +95 -0
- maxframe/codegen/spe/tensor/core.py +41 -0
- maxframe/codegen/spe/tensor/datasource.py +165 -0
- maxframe/codegen/spe/tensor/extensions.py +35 -0
- maxframe/codegen/spe/tensor/fetch.py +26 -0
- maxframe/codegen/spe/tensor/indexing.py +63 -0
- maxframe/codegen/spe/tensor/linalg.py +63 -0
- maxframe/codegen/spe/tensor/merge.py +31 -0
- maxframe/codegen/spe/tensor/misc.py +121 -0
- maxframe/codegen/spe/tensor/random.py +29 -0
- maxframe/codegen/spe/tensor/reduction.py +39 -0
- maxframe/codegen/spe/tensor/reshape.py +26 -0
- maxframe/codegen/spe/tensor/sort.py +42 -0
- maxframe/codegen/spe/tensor/special.py +35 -0
- maxframe/codegen/spe/tensor/statistics.py +24 -0
- maxframe/codegen/spe/tensor/tests/__init__.py +13 -0
- maxframe/codegen/spe/tensor/tests/test_arithmetic.py +103 -0
- maxframe/codegen/spe/tensor/tests/test_datasource.py +99 -0
- maxframe/codegen/spe/tensor/tests/test_extensions.py +37 -0
- maxframe/codegen/spe/tensor/tests/test_indexing.py +44 -0
- maxframe/codegen/spe/tensor/tests/test_linalg.py +38 -0
- maxframe/codegen/spe/tensor/tests/test_merge.py +28 -0
- maxframe/codegen/spe/tensor/tests/test_misc.py +94 -0
- maxframe/codegen/spe/tensor/tests/test_random.py +55 -0
- maxframe/codegen/spe/tensor/tests/test_reduction.py +65 -0
- maxframe/codegen/spe/tensor/tests/test_reshape.py +39 -0
- maxframe/codegen/spe/tensor/tests/test_sort.py +49 -0
- maxframe/codegen/spe/tensor/tests/test_special.py +28 -0
- maxframe/codegen/spe/tensor/tests/test_statistics.py +29 -0
- maxframe/codegen/spe/tests/__init__.py +13 -0
- maxframe/codegen/spe/tests/test_remote.py +29 -0
- maxframe/codegen/spe/tests/test_spe_codegen.py +141 -0
- maxframe/codegen/spe/utils.py +54 -0
- maxframe/codegen/tests/__init__.py +13 -0
- maxframe/{tests → codegen/tests}/test_codegen.py +3 -5
- maxframe/config/__init__.py +1 -1
- maxframe/config/config.py +50 -23
- maxframe/config/tests/test_config.py +4 -12
- maxframe/config/validators.py +5 -0
- maxframe/conftest.py +38 -10
- maxframe/core/__init__.py +1 -0
- maxframe/core/context.py +110 -0
- maxframe/core/entity/__init__.py +1 -0
- maxframe/core/entity/core.py +0 -7
- maxframe/core/entity/objects.py +19 -5
- maxframe/core/entity/output_types.py +11 -0
- maxframe/core/entity/tests/test_objects.py +11 -12
- maxframe/core/entity/tileables.py +3 -1
- maxframe/core/entity/utils.py +15 -0
- maxframe/core/graph/__init__.py +6 -1
- maxframe/core/graph/builder/base.py +5 -1
- maxframe/core/graph/core.cp37-win_amd64.pyd +0 -0
- maxframe/core/graph/core.pyx +17 -6
- maxframe/core/graph/entity.py +18 -6
- maxframe/core/operator/__init__.py +8 -3
- maxframe/core/operator/base.py +35 -12
- maxframe/core/operator/core.py +37 -14
- maxframe/core/operator/fetch.py +5 -18
- maxframe/core/operator/objects.py +0 -20
- maxframe/core/operator/shuffle.py +6 -72
- maxframe/dataframe/__init__.py +1 -0
- maxframe/dataframe/accessors/datetime_/core.py +7 -4
- maxframe/dataframe/accessors/string_/core.py +9 -6
- maxframe/dataframe/arithmetic/core.py +31 -20
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py +6 -0
- maxframe/dataframe/core.py +98 -91
- maxframe/dataframe/datasource/core.py +8 -1
- maxframe/dataframe/datasource/date_range.py +8 -0
- maxframe/dataframe/datasource/from_index.py +9 -5
- maxframe/dataframe/datasource/from_records.py +9 -2
- maxframe/dataframe/datasource/from_tensor.py +32 -21
- maxframe/dataframe/datasource/read_csv.py +8 -2
- maxframe/dataframe/datasource/read_odps_query.py +33 -3
- maxframe/dataframe/datasource/read_odps_table.py +20 -5
- maxframe/dataframe/datasource/read_parquet.py +8 -3
- maxframe/dataframe/datasource/tests/test_datasource.py +33 -0
- maxframe/dataframe/datastore/tests/test_to_odps.py +52 -1
- maxframe/dataframe/datastore/to_csv.py +7 -3
- maxframe/dataframe/datastore/to_odps.py +42 -6
- maxframe/dataframe/extensions/__init__.py +6 -1
- maxframe/dataframe/extensions/apply_chunk.py +96 -136
- maxframe/dataframe/extensions/flatjson.py +3 -2
- maxframe/dataframe/extensions/flatmap.py +15 -7
- maxframe/dataframe/fetch/core.py +12 -1
- maxframe/dataframe/groupby/__init__.py +7 -0
- maxframe/dataframe/groupby/aggregation.py +62 -9
- maxframe/dataframe/groupby/apply.py +50 -74
- maxframe/dataframe/groupby/apply_chunk.py +393 -0
- maxframe/dataframe/groupby/core.py +80 -17
- maxframe/dataframe/groupby/extensions.py +26 -0
- maxframe/dataframe/groupby/fill.py +9 -4
- maxframe/dataframe/groupby/sample.py +7 -7
- maxframe/dataframe/groupby/tests/test_groupby.py +3 -3
- maxframe/dataframe/groupby/transform.py +57 -54
- maxframe/dataframe/indexing/align.py +7 -6
- maxframe/dataframe/indexing/getitem.py +9 -8
- maxframe/dataframe/indexing/iloc.py +28 -23
- maxframe/dataframe/indexing/insert.py +7 -3
- maxframe/dataframe/indexing/loc.py +9 -8
- maxframe/dataframe/indexing/reindex.py +36 -30
- maxframe/dataframe/indexing/rename_axis.py +18 -10
- maxframe/dataframe/indexing/reset_index.py +0 -2
- maxframe/dataframe/indexing/sample.py +13 -9
- maxframe/dataframe/indexing/set_axis.py +9 -6
- maxframe/dataframe/indexing/setitem.py +8 -5
- maxframe/dataframe/indexing/where.py +12 -9
- maxframe/dataframe/merge/__init__.py +0 -1
- maxframe/dataframe/merge/concat.py +10 -31
- maxframe/dataframe/merge/merge.py +2 -24
- maxframe/dataframe/misc/__init__.py +6 -0
- maxframe/dataframe/misc/_duplicate.py +7 -3
- maxframe/dataframe/misc/apply.py +106 -139
- maxframe/dataframe/misc/astype.py +3 -2
- maxframe/dataframe/misc/case_when.py +11 -7
- maxframe/dataframe/misc/cut.py +11 -10
- maxframe/dataframe/misc/describe.py +7 -3
- maxframe/dataframe/misc/drop.py +13 -11
- maxframe/dataframe/misc/eval.py +0 -2
- maxframe/dataframe/misc/get_dummies.py +78 -49
- maxframe/dataframe/misc/isin.py +13 -10
- maxframe/dataframe/misc/map.py +21 -6
- maxframe/dataframe/misc/melt.py +8 -1
- maxframe/dataframe/misc/pivot.py +232 -0
- maxframe/dataframe/misc/pivot_table.py +52 -40
- maxframe/dataframe/misc/rechunk.py +59 -0
- maxframe/dataframe/misc/shift.py +7 -4
- maxframe/dataframe/misc/stack.py +5 -3
- maxframe/dataframe/misc/tests/test_misc.py +167 -1
- maxframe/dataframe/misc/transform.py +63 -65
- maxframe/dataframe/misc/value_counts.py +7 -4
- maxframe/dataframe/missing/dropna.py +16 -7
- maxframe/dataframe/missing/fillna.py +18 -10
- maxframe/dataframe/missing/replace.py +10 -6
- maxframe/dataframe/missing/tests/test_missing.py +2 -2
- maxframe/dataframe/operators.py +1 -27
- maxframe/dataframe/reduction/aggregation.py +128 -3
- maxframe/dataframe/reduction/core.py +20 -6
- maxframe/dataframe/reduction/median.py +1 -1
- maxframe/dataframe/reduction/tests/test_reduction.py +33 -0
- maxframe/dataframe/reduction/unique.py +53 -7
- maxframe/dataframe/statistics/corr.py +9 -6
- maxframe/dataframe/statistics/quantile.py +9 -6
- maxframe/dataframe/tseries/to_datetime.py +6 -4
- maxframe/dataframe/utils.py +219 -31
- maxframe/dataframe/window/rolling.py +7 -4
- maxframe/env.py +1 -0
- maxframe/errors.py +9 -0
- maxframe/extension.py +13 -2
- maxframe/io/objects/core.py +67 -51
- maxframe/io/objects/tensor.py +73 -17
- maxframe/io/objects/tests/test_object_io.py +8 -55
- maxframe/io/odpsio/arrow.py +15 -2
- maxframe/io/odpsio/schema.py +43 -13
- maxframe/io/odpsio/tableio.py +63 -11
- maxframe/io/odpsio/tests/test_arrow.py +1 -2
- maxframe/io/odpsio/tests/test_schema.py +114 -1
- maxframe/io/odpsio/tests/test_tableio.py +42 -0
- maxframe/io/odpsio/tests/test_volumeio.py +22 -48
- maxframe/learn/__init__.py +2 -2
- maxframe/learn/contrib/__init__.py +2 -2
- maxframe/learn/contrib/graph/connected_components.py +2 -1
- maxframe/learn/contrib/lightgbm/__init__.py +33 -0
- maxframe/learn/contrib/lightgbm/_predict.py +138 -0
- maxframe/learn/contrib/lightgbm/_train.py +163 -0
- maxframe/learn/contrib/lightgbm/callback.py +114 -0
- maxframe/learn/contrib/lightgbm/classifier.py +199 -0
- maxframe/learn/contrib/lightgbm/core.py +372 -0
- maxframe/learn/contrib/lightgbm/dataset.py +153 -0
- maxframe/learn/contrib/lightgbm/regressor.py +29 -0
- maxframe/learn/contrib/lightgbm/tests/__init__.py +13 -0
- maxframe/learn/contrib/lightgbm/tests/test_callback.py +58 -0
- maxframe/learn/contrib/llm/models/dashscope.py +34 -0
- maxframe/learn/contrib/llm/models/managed.py +15 -0
- maxframe/learn/contrib/llm/multi_modal.py +92 -0
- maxframe/learn/contrib/llm/text.py +21 -5
- maxframe/learn/contrib/models.py +38 -9
- maxframe/learn/contrib/utils.py +55 -0
- maxframe/learn/contrib/xgboost/callback.py +86 -0
- maxframe/learn/contrib/xgboost/classifier.py +26 -30
- maxframe/learn/contrib/xgboost/core.py +53 -42
- maxframe/learn/contrib/xgboost/dmatrix.py +19 -12
- maxframe/learn/contrib/xgboost/predict.py +13 -8
- maxframe/learn/contrib/xgboost/regressor.py +28 -27
- maxframe/learn/contrib/xgboost/tests/test_callback.py +41 -0
- maxframe/learn/contrib/xgboost/train.py +59 -16
- maxframe/learn/core.py +252 -0
- maxframe/learn/datasets/__init__.py +20 -0
- maxframe/learn/datasets/samples_generator.py +628 -0
- maxframe/learn/linear_model/__init__.py +15 -0
- maxframe/learn/linear_model/_base.py +163 -0
- maxframe/learn/linear_model/_lin_reg.py +175 -0
- maxframe/learn/metrics/__init__.py +25 -0
- maxframe/learn/metrics/_check_targets.py +95 -0
- maxframe/learn/metrics/_classification.py +1121 -0
- maxframe/learn/metrics/_regression.py +256 -0
- maxframe/learn/model_selection/__init__.py +15 -0
- maxframe/learn/model_selection/_split.py +451 -0
- maxframe/learn/model_selection/tests/__init__.py +13 -0
- maxframe/learn/model_selection/tests/test_split.py +156 -0
- maxframe/learn/preprocessing/__init__.py +16 -0
- maxframe/learn/preprocessing/_data/__init__.py +17 -0
- maxframe/learn/preprocessing/_data/min_max_scaler.py +390 -0
- maxframe/learn/preprocessing/_data/normalize.py +127 -0
- maxframe/learn/preprocessing/_data/standard_scaler.py +503 -0
- maxframe/learn/preprocessing/_data/utils.py +79 -0
- maxframe/learn/preprocessing/_label/__init__.py +16 -0
- maxframe/learn/preprocessing/_label/_label_binarizer.py +599 -0
- maxframe/learn/preprocessing/_label/_label_encoder.py +174 -0
- maxframe/learn/utils/__init__.py +4 -0
- maxframe/learn/utils/_encode.py +314 -0
- maxframe/learn/utils/checks.py +161 -0
- maxframe/learn/utils/core.py +33 -0
- maxframe/learn/utils/extmath.py +176 -0
- maxframe/learn/utils/multiclass.py +292 -0
- maxframe/learn/utils/shuffle.py +114 -0
- maxframe/learn/utils/sparsefuncs.py +87 -0
- maxframe/learn/utils/validation.py +775 -0
- maxframe/lib/__init__.py +0 -2
- maxframe/lib/compat.py +145 -0
- maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
- maxframe/lib/mmh3.cp37-win_amd64.pyd +0 -0
- maxframe/lib/sparse/__init__.py +10 -15
- maxframe/lib/sparse/array.py +45 -33
- maxframe/lib/sparse/core.py +0 -2
- maxframe/lib/sparse/linalg.py +31 -0
- maxframe/lib/sparse/matrix.py +5 -2
- maxframe/lib/sparse/tests/__init__.py +0 -2
- maxframe/lib/sparse/tests/test_sparse.py +53 -53
- maxframe/lib/sparse/vector.py +0 -2
- maxframe/mixin.py +59 -2
- maxframe/opcodes.py +13 -5
- maxframe/protocol.py +67 -14
- maxframe/remote/core.py +16 -14
- maxframe/remote/run_script.py +6 -3
- maxframe/serialization/__init__.py +2 -0
- maxframe/serialization/core.cp37-win_amd64.pyd +0 -0
- maxframe/serialization/core.pxd +3 -0
- maxframe/serialization/core.pyi +3 -1
- maxframe/serialization/core.pyx +82 -4
- maxframe/serialization/pandas.py +5 -1
- maxframe/serialization/serializables/core.py +6 -5
- maxframe/serialization/serializables/field.py +2 -2
- maxframe/serialization/serializables/tests/test_field_type.py +3 -5
- maxframe/serialization/tests/test_serial.py +27 -0
- maxframe/session.py +4 -71
- maxframe/sperunner.py +165 -0
- maxframe/tensor/__init__.py +35 -2
- maxframe/tensor/arithmetic/__init__.py +2 -4
- maxframe/tensor/arithmetic/abs.py +0 -2
- maxframe/tensor/arithmetic/absolute.py +0 -2
- maxframe/tensor/arithmetic/add.py +34 -4
- maxframe/tensor/arithmetic/angle.py +0 -2
- maxframe/tensor/arithmetic/arccos.py +1 -4
- maxframe/tensor/arithmetic/arccosh.py +1 -3
- maxframe/tensor/arithmetic/arcsin.py +0 -2
- maxframe/tensor/arithmetic/arcsinh.py +0 -2
- maxframe/tensor/arithmetic/arctan.py +0 -2
- maxframe/tensor/arithmetic/arctan2.py +0 -2
- maxframe/tensor/arithmetic/arctanh.py +0 -2
- maxframe/tensor/arithmetic/around.py +0 -2
- maxframe/tensor/arithmetic/bitand.py +0 -2
- maxframe/tensor/arithmetic/bitor.py +1 -3
- maxframe/tensor/arithmetic/bitxor.py +1 -3
- maxframe/tensor/arithmetic/cbrt.py +0 -2
- maxframe/tensor/arithmetic/ceil.py +0 -2
- maxframe/tensor/arithmetic/clip.py +13 -13
- maxframe/tensor/arithmetic/conj.py +0 -2
- maxframe/tensor/arithmetic/copysign.py +0 -2
- maxframe/tensor/arithmetic/core.py +47 -39
- maxframe/tensor/arithmetic/cos.py +1 -3
- maxframe/tensor/arithmetic/cosh.py +0 -2
- maxframe/tensor/arithmetic/deg2rad.py +0 -2
- maxframe/tensor/arithmetic/degrees.py +0 -2
- maxframe/tensor/arithmetic/divide.py +0 -2
- maxframe/tensor/arithmetic/equal.py +0 -2
- maxframe/tensor/arithmetic/exp.py +1 -3
- maxframe/tensor/arithmetic/exp2.py +0 -2
- maxframe/tensor/arithmetic/expm1.py +0 -2
- maxframe/tensor/arithmetic/fabs.py +0 -2
- maxframe/tensor/arithmetic/fix.py +0 -2
- maxframe/tensor/arithmetic/float_power.py +0 -2
- maxframe/tensor/arithmetic/floor.py +0 -2
- maxframe/tensor/arithmetic/floordiv.py +0 -2
- maxframe/tensor/arithmetic/fmax.py +0 -2
- maxframe/tensor/arithmetic/fmin.py +0 -2
- maxframe/tensor/arithmetic/fmod.py +0 -2
- maxframe/tensor/arithmetic/frexp.py +6 -2
- maxframe/tensor/arithmetic/greater.py +0 -2
- maxframe/tensor/arithmetic/greater_equal.py +0 -2
- maxframe/tensor/arithmetic/hypot.py +0 -2
- maxframe/tensor/arithmetic/i0.py +1 -3
- maxframe/tensor/arithmetic/imag.py +0 -2
- maxframe/tensor/arithmetic/invert.py +1 -3
- maxframe/tensor/arithmetic/isclose.py +0 -2
- maxframe/tensor/arithmetic/iscomplex.py +0 -2
- maxframe/tensor/arithmetic/isfinite.py +1 -3
- maxframe/tensor/arithmetic/isinf.py +0 -2
- maxframe/tensor/arithmetic/isnan.py +0 -2
- maxframe/tensor/arithmetic/isreal.py +0 -2
- maxframe/tensor/arithmetic/ldexp.py +0 -2
- maxframe/tensor/arithmetic/less.py +0 -2
- maxframe/tensor/arithmetic/less_equal.py +0 -2
- maxframe/tensor/arithmetic/log.py +1 -3
- maxframe/tensor/arithmetic/log10.py +1 -3
- maxframe/tensor/arithmetic/log1p.py +1 -3
- maxframe/tensor/arithmetic/log2.py +1 -3
- maxframe/tensor/arithmetic/logaddexp.py +0 -2
- maxframe/tensor/arithmetic/logaddexp2.py +0 -2
- maxframe/tensor/arithmetic/logical_and.py +0 -2
- maxframe/tensor/arithmetic/logical_not.py +1 -3
- maxframe/tensor/arithmetic/logical_or.py +0 -2
- maxframe/tensor/arithmetic/logical_xor.py +0 -2
- maxframe/tensor/arithmetic/lshift.py +0 -2
- maxframe/tensor/arithmetic/maximum.py +0 -2
- maxframe/tensor/arithmetic/minimum.py +0 -2
- maxframe/tensor/arithmetic/mod.py +0 -2
- maxframe/tensor/arithmetic/modf.py +6 -2
- maxframe/tensor/arithmetic/multiply.py +37 -4
- maxframe/tensor/arithmetic/nan_to_num.py +0 -2
- maxframe/tensor/arithmetic/negative.py +0 -2
- maxframe/tensor/arithmetic/nextafter.py +0 -2
- maxframe/tensor/arithmetic/not_equal.py +0 -2
- maxframe/tensor/arithmetic/positive.py +0 -2
- maxframe/tensor/arithmetic/power.py +0 -2
- maxframe/tensor/arithmetic/rad2deg.py +0 -2
- maxframe/tensor/arithmetic/radians.py +0 -2
- maxframe/tensor/arithmetic/real.py +0 -2
- maxframe/tensor/arithmetic/reciprocal.py +5 -3
- maxframe/tensor/arithmetic/rint.py +1 -3
- maxframe/tensor/arithmetic/rshift.py +0 -2
- maxframe/tensor/arithmetic/setimag.py +0 -2
- maxframe/tensor/arithmetic/setreal.py +0 -2
- maxframe/tensor/arithmetic/sign.py +0 -2
- maxframe/tensor/arithmetic/signbit.py +0 -2
- maxframe/tensor/arithmetic/sin.py +0 -2
- maxframe/tensor/arithmetic/sinc.py +1 -3
- maxframe/tensor/arithmetic/sinh.py +0 -2
- maxframe/tensor/arithmetic/spacing.py +0 -2
- maxframe/tensor/arithmetic/sqrt.py +0 -2
- maxframe/tensor/arithmetic/square.py +0 -2
- maxframe/tensor/arithmetic/subtract.py +4 -2
- maxframe/tensor/arithmetic/tan.py +0 -2
- maxframe/tensor/arithmetic/tanh.py +0 -2
- maxframe/tensor/arithmetic/tests/__init__.py +0 -2
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +43 -9
- maxframe/tensor/arithmetic/truediv.py +0 -2
- maxframe/tensor/arithmetic/trunc.py +0 -2
- maxframe/tensor/arithmetic/utils.py +32 -6
- maxframe/tensor/array_utils.py +3 -25
- maxframe/tensor/core.py +6 -6
- maxframe/tensor/datasource/__init__.py +10 -2
- maxframe/tensor/datasource/arange.py +0 -2
- maxframe/tensor/datasource/array.py +3 -22
- maxframe/tensor/datasource/core.py +15 -10
- maxframe/tensor/datasource/diag.py +140 -0
- maxframe/tensor/datasource/diagflat.py +69 -0
- maxframe/tensor/datasource/empty.py +0 -2
- maxframe/tensor/datasource/eye.py +95 -0
- maxframe/tensor/datasource/from_dataframe.py +0 -2
- maxframe/tensor/datasource/from_dense.py +0 -17
- maxframe/tensor/datasource/from_sparse.py +0 -2
- maxframe/tensor/datasource/full.py +0 -2
- maxframe/tensor/datasource/identity.py +54 -0
- maxframe/tensor/datasource/indices.py +115 -0
- maxframe/tensor/datasource/linspace.py +140 -0
- maxframe/tensor/datasource/meshgrid.py +135 -0
- maxframe/tensor/datasource/ones.py +8 -3
- maxframe/tensor/datasource/tests/test_datasource.py +32 -1
- maxframe/tensor/datasource/tri_array.py +107 -0
- maxframe/tensor/datasource/zeros.py +7 -3
- maxframe/tensor/extensions/__init__.py +31 -0
- maxframe/tensor/extensions/accessor.py +25 -0
- maxframe/tensor/extensions/apply_chunk.py +137 -0
- maxframe/tensor/indexing/__init__.py +1 -1
- maxframe/tensor/indexing/choose.py +8 -6
- maxframe/tensor/indexing/compress.py +0 -2
- maxframe/tensor/indexing/extract.py +0 -2
- maxframe/tensor/indexing/fill_diagonal.py +9 -6
- maxframe/tensor/indexing/flatnonzero.py +1 -3
- maxframe/tensor/indexing/getitem.py +10 -43
- maxframe/tensor/indexing/nonzero.py +2 -4
- maxframe/tensor/indexing/setitem.py +19 -9
- maxframe/tensor/indexing/slice.py +6 -3
- maxframe/tensor/indexing/take.py +0 -2
- maxframe/tensor/indexing/tests/__init__.py +0 -2
- maxframe/tensor/indexing/tests/test_indexing.py +0 -2
- maxframe/tensor/indexing/unravel_index.py +6 -6
- maxframe/tensor/lib/__init__.py +16 -0
- maxframe/tensor/lib/index_tricks.py +404 -0
- maxframe/tensor/linalg/__init__.py +36 -0
- maxframe/tensor/linalg/dot.py +145 -0
- maxframe/tensor/linalg/inner.py +36 -0
- maxframe/tensor/linalg/inv.py +83 -0
- maxframe/tensor/linalg/lu.py +115 -0
- maxframe/tensor/linalg/matmul.py +225 -0
- maxframe/tensor/linalg/qr.py +124 -0
- maxframe/tensor/linalg/solve_triangular.py +103 -0
- maxframe/tensor/linalg/svd.py +167 -0
- maxframe/tensor/linalg/tensordot.py +213 -0
- maxframe/tensor/linalg/vdot.py +73 -0
- maxframe/tensor/merge/__init__.py +4 -0
- maxframe/tensor/merge/append.py +74 -0
- maxframe/tensor/merge/column_stack.py +63 -0
- maxframe/tensor/merge/concatenate.py +3 -2
- maxframe/tensor/merge/dstack.py +71 -0
- maxframe/tensor/merge/hstack.py +70 -0
- maxframe/tensor/merge/stack.py +0 -2
- maxframe/tensor/merge/tests/test_merge.py +0 -2
- maxframe/tensor/misc/__init__.py +18 -5
- maxframe/tensor/misc/astype.py +10 -8
- maxframe/tensor/misc/broadcast_to.py +1 -1
- maxframe/tensor/misc/copy.py +64 -0
- maxframe/tensor/misc/diff.py +115 -0
- maxframe/tensor/misc/flatten.py +63 -0
- maxframe/tensor/misc/in1d.py +94 -0
- maxframe/tensor/misc/isin.py +130 -0
- maxframe/tensor/misc/ndim.py +53 -0
- maxframe/tensor/misc/ravel.py +0 -2
- maxframe/tensor/misc/repeat.py +129 -0
- maxframe/tensor/misc/searchsorted.py +147 -0
- maxframe/tensor/misc/setdiff1d.py +58 -0
- maxframe/tensor/misc/squeeze.py +117 -0
- maxframe/tensor/misc/swapaxes.py +113 -0
- maxframe/tensor/misc/tests/test_misc.py +0 -2
- maxframe/tensor/misc/transpose.py +8 -4
- maxframe/tensor/misc/trapezoid.py +123 -0
- maxframe/tensor/misc/unique.py +0 -1
- maxframe/tensor/misc/where.py +10 -8
- maxframe/tensor/operators.py +0 -34
- maxframe/tensor/random/__init__.py +3 -5
- maxframe/tensor/random/binomial.py +0 -2
- maxframe/tensor/random/bytes.py +0 -2
- maxframe/tensor/random/chisquare.py +0 -2
- maxframe/tensor/random/choice.py +9 -8
- maxframe/tensor/random/core.py +20 -5
- maxframe/tensor/random/dirichlet.py +0 -2
- maxframe/tensor/random/exponential.py +0 -2
- maxframe/tensor/random/f.py +2 -4
- maxframe/tensor/random/gamma.py +0 -2
- maxframe/tensor/random/geometric.py +0 -2
- maxframe/tensor/random/gumbel.py +0 -2
- maxframe/tensor/random/hypergeometric.py +0 -2
- maxframe/tensor/random/laplace.py +2 -4
- maxframe/tensor/random/logistic.py +0 -2
- maxframe/tensor/random/lognormal.py +0 -2
- maxframe/tensor/random/logseries.py +0 -2
- maxframe/tensor/random/multinomial.py +0 -2
- maxframe/tensor/random/multivariate_normal.py +0 -2
- maxframe/tensor/random/negative_binomial.py +0 -2
- maxframe/tensor/random/noncentral_chisquare.py +0 -2
- maxframe/tensor/random/noncentral_f.py +1 -3
- maxframe/tensor/random/normal.py +0 -2
- maxframe/tensor/random/pareto.py +0 -2
- maxframe/tensor/random/permutation.py +6 -3
- maxframe/tensor/random/poisson.py +0 -2
- maxframe/tensor/random/power.py +0 -2
- maxframe/tensor/random/rand.py +0 -2
- maxframe/tensor/random/randint.py +0 -2
- maxframe/tensor/random/randn.py +0 -2
- maxframe/tensor/random/random_integers.py +0 -2
- maxframe/tensor/random/random_sample.py +0 -2
- maxframe/tensor/random/rayleigh.py +0 -2
- maxframe/tensor/random/standard_cauchy.py +0 -2
- maxframe/tensor/random/standard_exponential.py +0 -2
- maxframe/tensor/random/standard_gamma.py +0 -2
- maxframe/tensor/random/standard_normal.py +0 -2
- maxframe/tensor/random/standard_t.py +0 -2
- maxframe/tensor/random/tests/__init__.py +0 -2
- maxframe/tensor/random/tests/test_random.py +0 -2
- maxframe/tensor/random/triangular.py +0 -2
- maxframe/tensor/random/uniform.py +0 -2
- maxframe/tensor/random/vonmises.py +0 -2
- maxframe/tensor/random/wald.py +0 -2
- maxframe/tensor/random/weibull.py +0 -2
- maxframe/tensor/random/zipf.py +0 -2
- maxframe/tensor/reduction/__init__.py +0 -2
- maxframe/tensor/reduction/all.py +0 -2
- maxframe/tensor/reduction/allclose.py +0 -2
- maxframe/tensor/reduction/any.py +0 -2
- maxframe/tensor/reduction/argmax.py +1 -3
- maxframe/tensor/reduction/argmin.py +1 -3
- maxframe/tensor/reduction/array_equal.py +0 -2
- maxframe/tensor/reduction/core.py +0 -2
- maxframe/tensor/reduction/count_nonzero.py +0 -2
- maxframe/tensor/reduction/cumprod.py +0 -2
- maxframe/tensor/reduction/cumsum.py +0 -2
- maxframe/tensor/reduction/max.py +0 -2
- maxframe/tensor/reduction/mean.py +0 -2
- maxframe/tensor/reduction/min.py +0 -2
- maxframe/tensor/reduction/nanargmax.py +0 -2
- maxframe/tensor/reduction/nanargmin.py +0 -2
- maxframe/tensor/reduction/nancumprod.py +0 -2
- maxframe/tensor/reduction/nancumsum.py +0 -2
- maxframe/tensor/reduction/nanmax.py +0 -2
- maxframe/tensor/reduction/nanmean.py +0 -2
- maxframe/tensor/reduction/nanmin.py +0 -2
- maxframe/tensor/reduction/nanprod.py +0 -2
- maxframe/tensor/reduction/nanstd.py +0 -2
- maxframe/tensor/reduction/nansum.py +0 -2
- maxframe/tensor/reduction/nanvar.py +0 -2
- maxframe/tensor/reduction/prod.py +0 -2
- maxframe/tensor/reduction/std.py +0 -2
- maxframe/tensor/reduction/sum.py +0 -2
- maxframe/tensor/reduction/tests/test_reduction.py +1 -4
- maxframe/tensor/reduction/var.py +0 -2
- maxframe/tensor/reshape/__init__.py +0 -2
- maxframe/tensor/reshape/reshape.py +6 -5
- maxframe/tensor/reshape/tests/__init__.py +0 -2
- maxframe/tensor/reshape/tests/test_reshape.py +0 -2
- maxframe/tensor/sort/__init__.py +16 -0
- maxframe/tensor/sort/argsort.py +150 -0
- maxframe/tensor/sort/sort.py +295 -0
- maxframe/tensor/special/__init__.py +37 -0
- maxframe/tensor/special/core.py +38 -0
- maxframe/tensor/special/misc.py +142 -0
- maxframe/tensor/special/statistical.py +56 -0
- maxframe/tensor/statistics/__init__.py +5 -0
- maxframe/tensor/statistics/average.py +143 -0
- maxframe/tensor/statistics/bincount.py +133 -0
- maxframe/tensor/statistics/quantile.py +10 -8
- maxframe/tensor/ufunc/__init__.py +0 -2
- maxframe/tensor/ufunc/ufunc.py +0 -2
- maxframe/tensor/utils.py +21 -3
- maxframe/tests/test_protocol.py +3 -3
- maxframe/tests/test_utils.py +210 -1
- maxframe/tests/utils.py +67 -1
- maxframe/udf.py +76 -6
- maxframe/utils.py +418 -17
- {maxframe-1.3.0.dist-info → maxframe-2.0.0b1.dist-info}/METADATA +5 -1
- maxframe-2.0.0b1.dist-info/RECORD +939 -0
- maxframe_client/clients/framedriver.py +19 -3
- maxframe_client/fetcher.py +113 -6
- maxframe_client/session/odps.py +173 -38
- maxframe_client/session/task.py +3 -1
- maxframe_client/tests/test_session.py +41 -5
- maxframe-1.3.0.dist-info/RECORD +0 -705
- {maxframe-1.3.0.dist-info → maxframe-2.0.0b1.dist-info}/WHEEL +0 -0
- {maxframe-1.3.0.dist-info → maxframe-2.0.0b1.dist-info}/top_level.txt +0 -0
maxframe/lib/__init__.py
CHANGED
maxframe/lib/compat.py
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Callable, List, Sequence, Tuple, Union
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
import pandas as pd
|
|
5
|
+
|
|
6
|
+
if TYPE_CHECKING:
|
|
7
|
+
from pandas._typing import ArrayLike, Scalar
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def case_when(
|
|
11
|
+
self,
|
|
12
|
+
caselist: List[
|
|
13
|
+
Tuple[
|
|
14
|
+
Union[
|
|
15
|
+
"ArrayLike",
|
|
16
|
+
Callable[[pd.Series], Union[pd.Series, np.ndarray, Sequence[bool]]],
|
|
17
|
+
],
|
|
18
|
+
Union[
|
|
19
|
+
"ArrayLike",
|
|
20
|
+
"Scalar",
|
|
21
|
+
Callable[[pd.Series], Union[pd.Series, np.ndarray]],
|
|
22
|
+
],
|
|
23
|
+
],
|
|
24
|
+
],
|
|
25
|
+
) -> pd.Series:
|
|
26
|
+
"""
|
|
27
|
+
Replace values where the conditions are True.
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
caselist : A list of tuples of conditions and expected replacements
|
|
32
|
+
Takes the form: ``(condition0, replacement0)``,
|
|
33
|
+
``(condition1, replacement1)``, ... .
|
|
34
|
+
``condition`` should be a 1-D boolean array-like object
|
|
35
|
+
or a callable. If ``condition`` is a callable,
|
|
36
|
+
it is computed on the Series
|
|
37
|
+
and should return a boolean Series or array.
|
|
38
|
+
The callable must not change the input Series
|
|
39
|
+
(though pandas doesn`t check it). ``replacement`` should be a
|
|
40
|
+
1-D array-like object, a scalar or a callable.
|
|
41
|
+
If ``replacement`` is a callable, it is computed on the Series
|
|
42
|
+
and should return a scalar or Series. The callable
|
|
43
|
+
must not change the input Series
|
|
44
|
+
(though pandas doesn`t check it).
|
|
45
|
+
|
|
46
|
+
.. versionadded:: 2.2.0
|
|
47
|
+
|
|
48
|
+
Returns
|
|
49
|
+
-------
|
|
50
|
+
Series
|
|
51
|
+
|
|
52
|
+
See Also
|
|
53
|
+
--------
|
|
54
|
+
Series.mask : Replace values where the condition is True.
|
|
55
|
+
|
|
56
|
+
Examples
|
|
57
|
+
--------
|
|
58
|
+
>>> c = pd.Series([6, 7, 8, 9], name='c')
|
|
59
|
+
>>> a = pd.Series([0, 0, 1, 2])
|
|
60
|
+
>>> b = pd.Series([0, 3, 4, 5])
|
|
61
|
+
|
|
62
|
+
>>> c.case_when(caselist=[(a.gt(0), a), # condition, replacement
|
|
63
|
+
... (b.gt(0), b)])
|
|
64
|
+
0 6
|
|
65
|
+
1 3
|
|
66
|
+
2 1
|
|
67
|
+
3 2
|
|
68
|
+
Name: c, dtype: int64
|
|
69
|
+
"""
|
|
70
|
+
from pandas.api.types import is_scalar
|
|
71
|
+
from pandas.core import common as com
|
|
72
|
+
from pandas.core.construction import array as pd_array
|
|
73
|
+
from pandas.core.dtypes.cast import (
|
|
74
|
+
construct_1d_arraylike_from_scalar,
|
|
75
|
+
find_common_type,
|
|
76
|
+
infer_dtype_from,
|
|
77
|
+
)
|
|
78
|
+
from pandas.core.dtypes.generic import ABCSeries
|
|
79
|
+
|
|
80
|
+
if not isinstance(caselist, list):
|
|
81
|
+
raise TypeError(
|
|
82
|
+
f"The caselist argument should be a list; instead got {type(caselist)}"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
if not caselist:
|
|
86
|
+
raise ValueError(
|
|
87
|
+
"provide at least one boolean condition, "
|
|
88
|
+
"with a corresponding replacement."
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
for num, entry in enumerate(caselist):
|
|
92
|
+
if not isinstance(entry, tuple):
|
|
93
|
+
raise TypeError(
|
|
94
|
+
f"Argument {num} must be a tuple; instead got {type(entry)}."
|
|
95
|
+
)
|
|
96
|
+
if len(entry) != 2:
|
|
97
|
+
raise ValueError(
|
|
98
|
+
f"Argument {num} must have length 2; "
|
|
99
|
+
"a condition and replacement; "
|
|
100
|
+
f"instead got length {len(entry)}."
|
|
101
|
+
)
|
|
102
|
+
caselist = [
|
|
103
|
+
(
|
|
104
|
+
com.apply_if_callable(condition, self),
|
|
105
|
+
com.apply_if_callable(replacement, self),
|
|
106
|
+
)
|
|
107
|
+
for condition, replacement in caselist
|
|
108
|
+
]
|
|
109
|
+
default = self.copy()
|
|
110
|
+
conditions, replacements = zip(*caselist)
|
|
111
|
+
common_dtypes = [infer_dtype_from(arg)[0] for arg in [*replacements, default]]
|
|
112
|
+
if len(set(common_dtypes)) > 1:
|
|
113
|
+
common_dtype = find_common_type(common_dtypes)
|
|
114
|
+
updated_replacements = []
|
|
115
|
+
for condition, replacement in zip(conditions, replacements):
|
|
116
|
+
if is_scalar(replacement):
|
|
117
|
+
replacement = construct_1d_arraylike_from_scalar(
|
|
118
|
+
value=replacement, length=len(condition), dtype=common_dtype
|
|
119
|
+
)
|
|
120
|
+
elif isinstance(replacement, ABCSeries):
|
|
121
|
+
replacement = replacement.astype(common_dtype)
|
|
122
|
+
else:
|
|
123
|
+
replacement = pd_array(replacement, dtype=common_dtype)
|
|
124
|
+
updated_replacements.append(replacement)
|
|
125
|
+
replacements = updated_replacements
|
|
126
|
+
default = default.astype(common_dtype)
|
|
127
|
+
|
|
128
|
+
counter = reversed(range(len(conditions)))
|
|
129
|
+
for position, condition, replacement in zip(
|
|
130
|
+
counter, conditions[::-1], replacements[::-1]
|
|
131
|
+
):
|
|
132
|
+
try:
|
|
133
|
+
default = default.mask(
|
|
134
|
+
condition, other=replacement, axis=0, inplace=False, level=None
|
|
135
|
+
)
|
|
136
|
+
except Exception as error:
|
|
137
|
+
raise ValueError(
|
|
138
|
+
f"Failed to apply condition{position} and replacement{position}."
|
|
139
|
+
) from error
|
|
140
|
+
return default
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def patch_pandas():
|
|
144
|
+
if not hasattr(pd.Series, "case_when"):
|
|
145
|
+
pd.Series.case_when = case_when
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"""
|
|
16
16
|
Filename globbing utility, modified from python glob.
|
|
17
17
|
|
|
18
|
-
obviously
|
|
18
|
+
obviously, this implementation is not optimal, it will cause too many
|
|
19
19
|
oss requests. Lately, We can then convert the glob expression into
|
|
20
20
|
a regular expression, and then match the oss key list.
|
|
21
21
|
But before that, we need to figure out how to deal with magic char
|
|
Binary file
|
maxframe/lib/sparse/__init__.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
1
|
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
4
2
|
#
|
|
5
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -19,6 +17,7 @@ import operator
|
|
|
19
17
|
from collections.abc import Iterable
|
|
20
18
|
from functools import partial, reduce
|
|
21
19
|
|
|
20
|
+
from . import linalg
|
|
22
21
|
from .array import SparseNDArray, call_sparse
|
|
23
22
|
from .core import get_sparse_module, issparse
|
|
24
23
|
from .matrix import SparseMatrix
|
|
@@ -313,6 +312,12 @@ airy = partial(_call_unary, "airy")
|
|
|
313
312
|
airye = partial(_call_unary, "airye")
|
|
314
313
|
itairy = partial(_call_unary, "itairy")
|
|
315
314
|
|
|
315
|
+
expit = partial(call_sparse, "expit")
|
|
316
|
+
logit = partial(call_sparse, "logit")
|
|
317
|
+
log_expit = partial(call_sparse, "log_expit")
|
|
318
|
+
|
|
319
|
+
softplus = partial(call_sparse, "softplus")
|
|
320
|
+
|
|
316
321
|
|
|
317
322
|
def equal(a, b, **_):
|
|
318
323
|
try:
|
|
@@ -837,23 +842,13 @@ def tril(m, k=0, gpu=False):
|
|
|
837
842
|
raise NotImplementedError
|
|
838
843
|
|
|
839
844
|
|
|
840
|
-
def lu(m):
|
|
841
|
-
from .matrix import lu_sparse_matrix
|
|
842
|
-
|
|
843
|
-
return lu_sparse_matrix(m)
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
def solve_triangular(a, b, lower=False, sparse=True):
|
|
847
|
-
from .matrix import solve_triangular_sparse_matrix
|
|
848
|
-
|
|
849
|
-
return solve_triangular_sparse_matrix(a, b, lower=lower, sparse=sparse)
|
|
850
|
-
|
|
851
|
-
|
|
852
845
|
def block(arrs):
|
|
853
846
|
arr = arrs[0]
|
|
854
847
|
while isinstance(arr, list):
|
|
855
848
|
arr = arr[0]
|
|
856
|
-
if arr.ndim
|
|
849
|
+
if arr.ndim == 1:
|
|
850
|
+
return concatenate(arrs)
|
|
851
|
+
elif arr.ndim != 2: # pragma: no cover
|
|
857
852
|
raise NotImplementedError
|
|
858
853
|
|
|
859
854
|
from .matrix import block
|
maxframe/lib/sparse/array.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
1
|
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
4
2
|
#
|
|
5
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -280,7 +278,7 @@ class SparseArray(SparseNDArray):
|
|
|
280
278
|
return NotImplemented
|
|
281
279
|
other_xp = get_array_module(naked_other)
|
|
282
280
|
if other_xp.isscalar(naked_other):
|
|
283
|
-
return
|
|
281
|
+
return other_xp.add(self.toarray(), naked_other)
|
|
284
282
|
if issparse(naked_other):
|
|
285
283
|
x = self.spmatrix + naked_other
|
|
286
284
|
else:
|
|
@@ -296,7 +294,7 @@ class SparseArray(SparseNDArray):
|
|
|
296
294
|
return NotImplemented
|
|
297
295
|
other_xp = get_array_module(naked_other)
|
|
298
296
|
if other_xp.isscalar(naked_other):
|
|
299
|
-
return
|
|
297
|
+
return other_xp.add(naked_other, self.toarray())
|
|
300
298
|
if issparse(naked_other):
|
|
301
299
|
x = self.spmatrix + naked_other
|
|
302
300
|
else:
|
|
@@ -312,7 +310,7 @@ class SparseArray(SparseNDArray):
|
|
|
312
310
|
return NotImplemented
|
|
313
311
|
other_xp = get_array_module(naked_other)
|
|
314
312
|
if other_xp.isscalar(naked_other):
|
|
315
|
-
return
|
|
313
|
+
return other_xp.subtract(self.toarray(), naked_other)
|
|
316
314
|
if issparse(naked_other):
|
|
317
315
|
x = self.spmatrix - naked_other
|
|
318
316
|
else:
|
|
@@ -328,7 +326,7 @@ class SparseArray(SparseNDArray):
|
|
|
328
326
|
return NotImplemented
|
|
329
327
|
other_xp = get_array_module(naked_other)
|
|
330
328
|
if other_xp.isscalar(naked_other):
|
|
331
|
-
return
|
|
329
|
+
return other_xp.subtract(naked_other, self.toarray())
|
|
332
330
|
if issparse(naked_other):
|
|
333
331
|
x = naked_other - self.spmatrix
|
|
334
332
|
else:
|
|
@@ -645,19 +643,24 @@ class SparseArray(SparseNDArray):
|
|
|
645
643
|
return SparseNDArray(self.spmatrix.conj(), shape=self.shape)
|
|
646
644
|
|
|
647
645
|
def exp(self):
|
|
648
|
-
|
|
646
|
+
xp = get_array_module(self.spmatrix)
|
|
647
|
+
return xp.exp(self.toarray())
|
|
649
648
|
|
|
650
649
|
def exp2(self):
|
|
651
|
-
|
|
650
|
+
xp = get_array_module(self.spmatrix)
|
|
651
|
+
return xp.exp2(self.toarray())
|
|
652
652
|
|
|
653
653
|
def log(self):
|
|
654
|
-
|
|
654
|
+
xp = get_array_module(self.spmatrix)
|
|
655
|
+
return xp.log(self.toarray())
|
|
655
656
|
|
|
656
657
|
def log2(self):
|
|
657
|
-
|
|
658
|
+
xp = get_array_module(self.spmatrix)
|
|
659
|
+
return xp.log2(self.toarray())
|
|
658
660
|
|
|
659
661
|
def log10(self):
|
|
660
|
-
|
|
662
|
+
xp = get_array_module(self.spmatrix)
|
|
663
|
+
return xp.log10(self.toarray())
|
|
661
664
|
|
|
662
665
|
def expm1(self):
|
|
663
666
|
return SparseNDArray(self.spmatrix.expm1(), shape=self.shape)
|
|
@@ -675,7 +678,8 @@ class SparseArray(SparseNDArray):
|
|
|
675
678
|
return call_sparse("cbrt", self)
|
|
676
679
|
|
|
677
680
|
def reciprocal(self):
|
|
678
|
-
|
|
681
|
+
xp = get_array_module(self.spmatrix)
|
|
682
|
+
return xp.reciprocal(self.toarray())
|
|
679
683
|
|
|
680
684
|
def _scipy_unary(self, func_name):
|
|
681
685
|
spmatrix = self.spmatrix
|
|
@@ -952,7 +956,8 @@ class SparseArray(SparseNDArray):
|
|
|
952
956
|
return get_array_module(x).asarray(x)
|
|
953
957
|
|
|
954
958
|
def logical_not(self):
|
|
955
|
-
|
|
959
|
+
xp = get_array_module(self.spmatrix)
|
|
960
|
+
return xp.logical_not(self.toarray())
|
|
956
961
|
|
|
957
962
|
@staticmethod
|
|
958
963
|
def _bitwise(this, other, method_name):
|
|
@@ -989,23 +994,27 @@ class SparseArray(SparseNDArray):
|
|
|
989
994
|
return self._bitwise(other, self.spmatrix, "bitwise_and")
|
|
990
995
|
|
|
991
996
|
def __or__(self, other):
|
|
992
|
-
|
|
993
|
-
|
|
997
|
+
other_xp = get_array_module(other)
|
|
998
|
+
if other_xp.isscalar(other):
|
|
999
|
+
return other_xp.bitwise_or(self.toarray(), other)
|
|
994
1000
|
return self._bitwise(self.spmatrix, other, "bitwise_or")
|
|
995
1001
|
|
|
996
1002
|
def __ror__(self, other):
|
|
997
|
-
|
|
998
|
-
|
|
1003
|
+
other_xp = get_array_module(other)
|
|
1004
|
+
if other_xp.isscalar(other):
|
|
1005
|
+
return other_xp.bitwise_or(other, self.toarray())
|
|
999
1006
|
return self._bitwise(other, self.spmatrix, "bitwise_or")
|
|
1000
1007
|
|
|
1001
1008
|
def __xor__(self, other):
|
|
1002
|
-
|
|
1003
|
-
|
|
1009
|
+
other_xp = get_array_module(other)
|
|
1010
|
+
if other_xp.isscalar(other):
|
|
1011
|
+
return other_xp.bitwise_xor(self.toarray(), other)
|
|
1004
1012
|
return self._bitwise(self.spmatrix, other, "bitwise_xor")
|
|
1005
1013
|
|
|
1006
1014
|
def __rxor__(self, other):
|
|
1007
|
-
|
|
1008
|
-
|
|
1015
|
+
other_xp = get_array_module(other)
|
|
1016
|
+
if other_xp.isscalar(other):
|
|
1017
|
+
return other_xp.bitwise_xor(other, self.toarray())
|
|
1009
1018
|
return self._bitwise(other, self.spmatrix, "bitwise_xor")
|
|
1010
1019
|
|
|
1011
1020
|
def isclose(self, other, **kw):
|
|
@@ -1020,7 +1029,8 @@ class SparseArray(SparseNDArray):
|
|
|
1020
1029
|
return xp.isclose(self.toarray(), naked_other, **kw)
|
|
1021
1030
|
|
|
1022
1031
|
def __invert__(self):
|
|
1023
|
-
|
|
1032
|
+
xp = get_array_module(self.spmatrix)
|
|
1033
|
+
return xp.invert(self.toarray())
|
|
1024
1034
|
|
|
1025
1035
|
@staticmethod
|
|
1026
1036
|
def _shift(this, other, method_name):
|
|
@@ -1087,7 +1097,8 @@ class SparseArray(SparseNDArray):
|
|
|
1087
1097
|
return SparseNDArray(self.spmatrix.sin(), shape=self.shape)
|
|
1088
1098
|
|
|
1089
1099
|
def cos(self):
|
|
1090
|
-
|
|
1100
|
+
xp = get_array_module(self.spmatrix)
|
|
1101
|
+
return xp.cos(self.toarray())
|
|
1091
1102
|
|
|
1092
1103
|
def tan(self):
|
|
1093
1104
|
return SparseNDArray(self.spmatrix.tan(), shape=self.shape)
|
|
@@ -1096,7 +1107,8 @@ class SparseArray(SparseNDArray):
|
|
|
1096
1107
|
return SparseNDArray(self.spmatrix.arcsin(), shape=self.shape)
|
|
1097
1108
|
|
|
1098
1109
|
def arccos(self):
|
|
1099
|
-
|
|
1110
|
+
xp = get_array_module(self.spmatrix)
|
|
1111
|
+
return xp.arccos(self.toarray())
|
|
1100
1112
|
|
|
1101
1113
|
def arctan(self):
|
|
1102
1114
|
return SparseNDArray(self.spmatrix.arctan(), shape=self.shape)
|
|
@@ -1145,7 +1157,8 @@ class SparseArray(SparseNDArray):
|
|
|
1145
1157
|
return SparseNDArray(self.spmatrix.arcsinh(), shape=self.shape)
|
|
1146
1158
|
|
|
1147
1159
|
def arccosh(self):
|
|
1148
|
-
|
|
1160
|
+
xp = get_array_module(self.spmatrix)
|
|
1161
|
+
return xp.arccosh(self.toarray())
|
|
1149
1162
|
|
|
1150
1163
|
def arctanh(self):
|
|
1151
1164
|
return SparseNDArray(self.spmatrix.arctanh(), shape=self.shape)
|
|
@@ -1436,11 +1449,7 @@ class SparseArray(SparseNDArray):
|
|
|
1436
1449
|
|
|
1437
1450
|
def i0(self):
|
|
1438
1451
|
xp = get_array_module(self.spmatrix)
|
|
1439
|
-
|
|
1440
|
-
x = get_sparse_module(self.spmatrix).csr_matrix(
|
|
1441
|
-
(data, self.spmatrix.indices, self.spmatrix.indptr), self.spmatrix.shape
|
|
1442
|
-
)
|
|
1443
|
-
return SparseNDArray(x, shape=self.shape)
|
|
1452
|
+
return xp.i0(self.toarray())
|
|
1444
1453
|
|
|
1445
1454
|
def nan_to_num(self):
|
|
1446
1455
|
return call_sparse("nan_to_num", self)
|
|
@@ -1517,13 +1526,16 @@ class SparseArray(SparseNDArray):
|
|
|
1517
1526
|
)
|
|
1518
1527
|
|
|
1519
1528
|
def sinc(self):
|
|
1520
|
-
|
|
1529
|
+
xp = get_array_module(self.spmatrix)
|
|
1530
|
+
return xp.sinc(self.toarray())
|
|
1521
1531
|
|
|
1522
1532
|
def isfinite(self):
|
|
1523
|
-
|
|
1533
|
+
xp = get_array_module(self.spmatrix)
|
|
1534
|
+
return xp.isfinite(self.toarray())
|
|
1524
1535
|
|
|
1525
1536
|
def isreal(self):
|
|
1526
|
-
|
|
1537
|
+
xp = get_array_module(self.spmatrix)
|
|
1538
|
+
return xp.isreal(self.toarray())
|
|
1527
1539
|
|
|
1528
1540
|
def digitize(self, bins, right=False):
|
|
1529
1541
|
return call_sparse("digitize", self, bins=bins, right=right)
|
maxframe/lib/sparse/core.py
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def inv(m):
|
|
17
|
+
from .matrix import inv_sparse_matrix
|
|
18
|
+
|
|
19
|
+
return inv_sparse_matrix(m)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def lu(m):
|
|
23
|
+
from .matrix import lu_sparse_matrix
|
|
24
|
+
|
|
25
|
+
return lu_sparse_matrix(m)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def solve_triangular(a, b, lower=False, sparse=True):
|
|
29
|
+
from .matrix import solve_triangular_sparse_matrix
|
|
30
|
+
|
|
31
|
+
return solve_triangular_sparse_matrix(a, b, lower=lower, sparse=sparse)
|
maxframe/lib/sparse/matrix.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
1
|
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
4
2
|
#
|
|
5
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -113,6 +111,11 @@ def lu_sparse_matrix(a):
|
|
|
113
111
|
)
|
|
114
112
|
|
|
115
113
|
|
|
114
|
+
def inv_sparse_matrix(a):
|
|
115
|
+
a = naked(a)
|
|
116
|
+
return SparseMatrix(splinalg.inv(a))
|
|
117
|
+
|
|
118
|
+
|
|
116
119
|
def solve_triangular_sparse_matrix(a, b, lower=False, sparse=True):
|
|
117
120
|
a = naked(a)
|
|
118
121
|
b = b.toarray() if issparse(b) else b
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
1
|
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
4
2
|
#
|
|
5
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -85,10 +83,8 @@ def test_sparse_add():
|
|
|
85
83
|
assert_array_equal(s1 + s2, s1 + s2)
|
|
86
84
|
assert_array_equal(s1 + d1, s1 + d1)
|
|
87
85
|
assert_array_equal(d1 + s1, d1 + s1)
|
|
88
|
-
|
|
89
|
-
assert_array_equal(
|
|
90
|
-
r = sps.csr_matrix(((1 + s1.data), s1.indices, s1.indptr), s1.shape)
|
|
91
|
-
assert_array_equal(1 + s1, r)
|
|
86
|
+
assert_array_equal(s1 + 1, s1.toarray() + 1)
|
|
87
|
+
assert_array_equal(1 + s1.toarray(), 1 + s1.toarray())
|
|
92
88
|
|
|
93
89
|
# test sparse vector
|
|
94
90
|
v = SparseNDArray(v1, shape=(3,))
|
|
@@ -108,10 +104,8 @@ def test_sparse_subtract():
|
|
|
108
104
|
assert_array_equal(s1 - s2, s1 - s2)
|
|
109
105
|
assert_array_equal(s1 - d1, s1 - d1)
|
|
110
106
|
assert_array_equal(d1 - s1, d1 - s1)
|
|
111
|
-
|
|
112
|
-
assert_array_equal(
|
|
113
|
-
r = sps.csr_matrix(((1 - s1.data), s1.indices, s1.indptr), s1.shape)
|
|
114
|
-
assert_array_equal(1 - s1, r)
|
|
107
|
+
assert_array_equal(s1 - 1, s1.toarray() - 1)
|
|
108
|
+
assert_array_equal(1 - s1, 1 - s1.toarray())
|
|
115
109
|
|
|
116
110
|
# test sparse vector
|
|
117
111
|
v = SparseNDArray(v1, shape=(3,))
|
|
@@ -264,53 +258,59 @@ def test_sparse_bin():
|
|
|
264
258
|
assert_array_equal(lm(2, v), rm(2, v1_data))
|
|
265
259
|
|
|
266
260
|
|
|
267
|
-
|
|
261
|
+
@pytest.mark.parametrize(
|
|
262
|
+
"method,dense",
|
|
263
|
+
[
|
|
264
|
+
("exp", True),
|
|
265
|
+
("exp2", True),
|
|
266
|
+
("log", True),
|
|
267
|
+
("log2", True),
|
|
268
|
+
("log10", True),
|
|
269
|
+
("reciprocal", True),
|
|
270
|
+
("cos", True),
|
|
271
|
+
("arccos", True),
|
|
272
|
+
("arccosh", True),
|
|
273
|
+
("sinc", True),
|
|
274
|
+
("isreal", True),
|
|
275
|
+
("isfinite", True),
|
|
276
|
+
("negative", False),
|
|
277
|
+
("positive", False),
|
|
278
|
+
("absolute", False),
|
|
279
|
+
("abs", False),
|
|
280
|
+
("fabs", False),
|
|
281
|
+
("rint", False),
|
|
282
|
+
("sign", False),
|
|
283
|
+
("conj", False),
|
|
284
|
+
("expm1", False),
|
|
285
|
+
("log1p", False),
|
|
286
|
+
("sqrt", False),
|
|
287
|
+
("square", False),
|
|
288
|
+
("cbrt", False),
|
|
289
|
+
("sin", False),
|
|
290
|
+
("tan", False),
|
|
291
|
+
("arcsin", False),
|
|
292
|
+
("arctan", False),
|
|
293
|
+
("arcsinh", False),
|
|
294
|
+
("arctanh", False),
|
|
295
|
+
("deg2rad", False),
|
|
296
|
+
("rad2deg", False),
|
|
297
|
+
("angle", False),
|
|
298
|
+
("isnan", False),
|
|
299
|
+
("isinf", False),
|
|
300
|
+
("signbit", False),
|
|
301
|
+
],
|
|
302
|
+
)
|
|
303
|
+
def test_sparse_unary_normal(method, dense):
|
|
268
304
|
s1 = SparseNDArray(s1_data)
|
|
269
305
|
v = SparseNDArray(v1, shape=(3,))
|
|
270
306
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
"abs",
|
|
276
|
-
"fabs",
|
|
277
|
-
"rint",
|
|
278
|
-
"sign",
|
|
279
|
-
"conj",
|
|
280
|
-
"exp",
|
|
281
|
-
"exp2",
|
|
282
|
-
"log",
|
|
283
|
-
"log2",
|
|
284
|
-
"log10",
|
|
285
|
-
"expm1",
|
|
286
|
-
"log1p",
|
|
287
|
-
"sqrt",
|
|
288
|
-
"square",
|
|
289
|
-
"cbrt",
|
|
290
|
-
"reciprocal",
|
|
291
|
-
"sin",
|
|
292
|
-
"cos",
|
|
293
|
-
"tan",
|
|
294
|
-
"arcsin",
|
|
295
|
-
"arccos",
|
|
296
|
-
"arctan",
|
|
297
|
-
"arcsinh",
|
|
298
|
-
"arccosh",
|
|
299
|
-
"arctanh",
|
|
300
|
-
"deg2rad",
|
|
301
|
-
"rad2deg",
|
|
302
|
-
"angle",
|
|
303
|
-
"isnan",
|
|
304
|
-
"isinf",
|
|
305
|
-
"signbit",
|
|
306
|
-
"sinc",
|
|
307
|
-
"isreal",
|
|
308
|
-
"isfinite",
|
|
309
|
-
):
|
|
310
|
-
lm, rm = getattr(mls, method), getattr(np, method)
|
|
307
|
+
lm, rm = getattr(mls, method), getattr(np, method)
|
|
308
|
+
if dense:
|
|
309
|
+
r = rm(s1.toarray())
|
|
310
|
+
else:
|
|
311
311
|
r = sps.csr_matrix((rm(s1.data), s1.indices, s1.indptr), s1.shape)
|
|
312
|
-
|
|
313
|
-
|
|
312
|
+
assert_array_equal(lm(s1), r)
|
|
313
|
+
assert_array_equal(lm(v), rm(v1_data))
|
|
314
314
|
|
|
315
315
|
|
|
316
316
|
def test_sparse_dot():
|