将Breeze Matrix转换为Numpy Array

时间:2016-12-12 15:38:19

标签: numpy apache-spark pyspark breeze scala-breeze

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

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

火花:

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

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 output

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