在PySp中转置行矩阵

2024-09-30 20:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我想知道如何在PySpark中转换RowMatrix。在

data = [(MLLibVectors.dense([1.0, 2.0]), ), (MLLibVectors.dense([3.0, 4.0]), )]

df=sqlContext.createDataFrame(data, ["features"])
features=df.select("features").rdd.map(lambda row: row[0])

mat=RowMatrix(features)
print mat.rows.first()
#[1.0,2.0]

mat=mat.Transpose()

print mat.rows.first()
#[1.0,3.0]

有人用Python实现这个吗?我也看到过类似的帖子,但都是用Scala写的。谢谢。在


Tags: dfdataselectpysparkdenserowsrowfirst
1条回答
网友
1楼 · 发布于 2024-09-30 20:24:53

RowMatrix没有transpose方法。您可能需要一个BlockMatrix或一个CoordinateMatrix。在


from pyspark.mllib.linalg.distributed import CoordinateMatrix, MatrixEntry

cm = CoordinateMatrix(
    mat.rows.zipWithIndex().flatMap(
        lambda x: [MatrixEntry(x[1], j, v) for j, v in enumerate(x[0])]
    )
)

cm.toRowMatrix().rows.first().toArray()
# array([ 1.,  2.])

cm.transpose().toRowMatrix().rows.first().toArray()
# array([ 1.,  3.])

相关问题 更多 >