gpt4 book ai didi

numpy - 将 Spark 数据帧收集到 Numpy 矩阵中

转载 作者:行者123 更新时间:2023-12-01 09:06:52 28 4
gpt4 key购买 nike

我已经使用 spark 在大型数据集上计算 PCA,现在我有一个具有以下结构的 spark 数据框:

Row('pcaFeatures'=DenseVector(elem1,emlem2..)) 

其中 elem1,...,elemN 是 double 。我想将其转换为 numpy 矩阵。现在我正在使用以下代码:

numpymatrix = datapca.toPandas().as_Matrix()

但我得到了一个 numpy 系列,其元素类型为 Object 而不是数字矩阵。有没有办法得到我需要的矩阵?

最佳答案

只有当结果数据适合您的主内存时,您的请求才有意义(即您可以安全地使用 collect());另一方面,如果是这种情况,诚然,您完全没有理由使用 Spark。

无论如何,鉴于此假设,这里是将单列 features Spark 数据帧(DenseVectorRows)转换为的通用方法使用玩具数据的 NumPy 数组:

spark.version
# u'2.2.0'

from pyspark.ml.linalg import Vectors
import numpy as np

# toy data:
df = spark.createDataFrame([(Vectors.dense([0,45,63,0,0,0,0]),),
(Vectors.dense([0,0,0,85,0,69,0]),),
(Vectors.dense([0,89,56,0,0,0,0]) ,),
], ['features'])

dd = df.collect()
dd
# [Row(features=DenseVector([0.0, 45.0, 63.0, 0.0, 0.0, 0.0, 0.0])),
# Row(features=DenseVector([0.0, 0.0, 0.0, 85.0, 0.0, 69.0, 0.0])),
# Row(features=DenseVector([0.0, 89.0, 56.0, 0.0, 0.0, 0.0, 0.0]))]

np.asarray([x[0] for x in dd])
# array([[ 0., 45., 63., 0., 0., 0., 0.],
# [ 0., 0., 0., 85., 0., 69., 0.],
# [ 0., 89., 56., 0., 0., 0., 0.]])

关于numpy - 将 Spark 数据帧收集到 Numpy 矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48488636/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com