将微风矩阵转换为数字数组

问题描述 投票:0回答:1

是否有可能使用spark将微风密集矩阵转换为numpy数组?

我这里有一个微风密集的矩阵,我想转换为numpy数组。

enter image description here

numpy apache-spark pyspark breeze scala-breeze
1个回答
0
投票

这里是一种可以正常工作,但速度慢/效率低(创建多个副本)的方法。我使用了齐柏林飞艇的火花和pyspark解释器(我猜也应该是toree):

火花:

%spark
import breeze.linalg._
import breeze.numerics._
z.put("matrix", DenseMatrix.eye[Double](4));
z.get("matrix")

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS85dXRWNi5wbmcifQ==” width =“ 200” alt =“ scala output”>

然后使用python:

%pyspark
import numpy as np
def breeze2numpy(breeze_matrix):
    data = list(breeze_matrix.copy().data())
    return np.array(data).reshape(breeze_matrix.rows(), breeze_matrix.cols(), order='F')
breeze2numpy(z.z.get("matrix"))

“

这可行,但是对于大型数据集将是不切实际的(因为通过python列表涉及多个副本)。最好使用python的缓冲区协议创建零拷贝方法,就像C ++特征矩阵-> numpy数组一样。

© www.soinside.com 2019 - 2024. All rights reserved.