首页 > 解决方案 > 将breeze.linalg.DenseMatrix[Double] 转换为Scala 中的数据框

问题描述

我有一个如下微风.linalg.DenseMatrix[Double],我想将其转换为数据框

breeze.linalg.DenseMatrix[Double] =
0.009748169568491553   3.04248345416453E-4    -0.0018493112842201912  8.200326863261204E-4
3.0424834541645305E-4  0.00873118653317929    6.352723194418622E-4    1.84118791655692E-5
-0.001849311284220191  6.35272319441862E-4    0.008553284420541575    -6.407982513791382E-4
8.200326863261203E-4   1.8411879165568983E-5  -6.407982513791378E-4   0.008413484758510377

有什么办法可以做到吗?

标签: scaladataframeapache-sparkmatrix

解决方案


经过几次尝试,我能够创建一个包含矩阵扁平信息的数据框。并创建一个临时视图,以便从 python 访问作为数据框

在斯卡拉

// covarianceMatrix (in scala)

val c = covarianceMatrix.toArray.toSeq
val covarianceMatrix_df = c.toDF("number")
covarianceMatrix_df.createOrReplaceTempView("covarianceMatrix_df")

在蟒蛇

covarianceMatrix_df=spark.sql('''SELECT * FROM covarianceMatrix_df  ''')
covarianceMatrix_pd = covarianceMatrix_df.toPandas()
nrows = np.sqrt(len(covarianceMatrix_pd))
covarianceMatrix_pd = covarianceMatrix_pd.to_numpy().reshape((int(nrows),int(nrows)))
covarianceMatrix_pd

推荐阅读