首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建vectors.dense和sparse.dense,它们是相同的吗?

创建vectors.dense和sparse.dense,它们是相同的吗?
EN

Stack Overflow用户
提问于 2020-09-22 06:06:06
回答 1查看 48关注 0票数 1

我试图更好地理解这两种类型,所以我创建了这两个数组,以确定我是否做得对。我现在所做的是创建两个相同的数组,我的目标是:

代码语言:javascript
复制
dv = [1.0, 0.0, 3.0]
sv = [1.0, 0.0, 3.0]

所以我写了下面的语法,

代码语言:javascript
复制
from pyspark.sql import SparkSession
from pyspark.ml.linalg import Vectors

spark = SparkSession.builder.getOrCreate()


dv = Vectors.dense(1.0, 0.0, 3.0)
    
sv = Vectors.sparse(3, [(0,2), (1.,3.)])

因此,我的第一个问题是,我的语法是否正确,以实现我的目标?

我的第二个问题是,当我打印它们时,

代码语言:javascript
复制
print(dv)
print(sv)

他们返回:

代码语言:javascript
复制
[1.0,0.0,3.0]
(3,[0,1],[2.0,3.0])

那么,如何显示sv的“真实”数组呢?就像在这个"Vectors.dense?表单“里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-22 20:33:49

稀疏向量的创建略有错误。从文档:第二个和第三个参数应该是

包含索引和值的两个排序列表

这给了我们

代码语言:javascript
复制
sv = Vectors.sparse(3, [0,2], [1.,3])

要将向量转换为数组,可以使用函数数组

代码语言:javascript
复制
from pyspark.sql import functions as F
from pyspark.ml.functions import vector_to_array

spark.createDataFrame([(dv,), (sv,)], ['col1']) \
    .withColumn("as_array", vector_to_array(F.col('col1'))) \
    .show(truncate=False)

版画

代码语言:javascript
复制
+-------------------+---------------+
|col1               |as_array       |
+-------------------+---------------+
|[1.0,0.0,3.0]      |[1.0, 0.0, 3.0]|
|(3,[0,2],[1.0,3.0])|[1.0, 0.0, 3.0]|
+-------------------+---------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64003918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档