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.Column or str

输入列

dtype str, optional

输出数组的数据类型。有效值:“float64” 或 “float32”。

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)]