pyspark.ml.functions.vector_to_array ¶
-
pyspark.ml.functions.vector_to_array( col : pyspark.sql.column.Column , dtype : str = 'float64' ) → pyspark.sql.column.Column [source] ¶ -
将MLlib稀疏/密集向量的列转换为密集数组的列。
新增于版本 3.0.0。
版本 3.5.0 更改: 支持 Spark Connect。
- Parameters
-
-
col
pyspark.sql.Columnor str -
输入列
- dtype str, optional
-
输出数组的数据类型。有效值:“float64” 或 “float32”。
-
col
- Returns
-
-
pyspark.sql.Column -
转换后的密集数组列。
-
示例
>>> from pyspark.ml.linalg import Vectors >>> from pyspark.ml.functions import vector_to_array >>> from pyspark.mllib.linalg import Vectors as OldVectors >>> df = spark.createDataFrame([ ... (Vectors.dense(1.0, 2.0, 3.0), OldVectors.dense(10.0, 20.0, 30.0)), ... (Vectors.sparse(3, [(0, 2.0), (2, 3.0)]), ... OldVectors.sparse(3, [(0, 20.0), (2, 30.0)]))], ... ["vec", "oldVec"]) >>> df1 = df.select(vector_to_array("vec").alias("vec"), ... vector_to_array("oldVec").alias("oldVec")) >>> df1.collect() [Row(vec=[1.0, 2.0, 3.0], oldVec=[10.0, 20.0, 30.0]), Row(vec=[2.0, 0.0, 3.0], oldVec=[20.0, 0.0, 30.0])] >>> df2 = df.select(vector_to_array("vec", "float32").alias("vec"), ... vector_to_array("oldVec", "float32").alias("oldVec")) >>> df2.collect() [Row(vec=[1.0, 2.0, 3.0], oldVec=[10.0, 20.0, 30.0]), Row(vec=[2.0, 0.0, 3.0], oldVec=[20.0, 0.0, 30.0])] >>> df1.schema.fields [StructField('vec', ArrayType(DoubleType(), False), False), StructField('oldVec', ArrayType(DoubleType(), False), False)] >>> df2.schema.fields [StructField('vec', ArrayType(FloatType(), False), False), StructField('oldVec', ArrayType(FloatType(), False), False)]