Spark 的文档,用于创建 pyspark.ml.linalg.SparseMatrix
说:
Column-major sparse matrix. The entry values are stored in Compressed
Sparse Column (CSC) format. For example, the following matrix
1.0 0.0 4.0
0.0 3.0 5.0
2.0 0.0 6.0
is stored as values: [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
rowIndices=[0, 2, 1, 0, 1, 2],
colPointers=[0, 2, 3, 6]
您能解释一下我们如何导出 colPointers
吗?它说它们代表对应于新列开头的索引,但我仍然无法理解它。
最佳答案
在矩阵中使用字符而不是 float 使阅读更容易:
a 0 d
0 c e
b 0 f
存储为
values: [a, b, c, d, e, f]
rowIndices: [0, 2, 1, 0, 1, 2]
colPointers: [0, 2, 3, 6]
values
是矩阵中的非空值rowIndices
将values
中的值映射到它们在矩阵中的行索引,即a
存储在第 0 行;b
存储在第 2 行,c
存储在第 1 行......所以values
中的每个值都有一个行索引>
colPointers
将values
分成列。所以我们可以将values
列表表示为[|a, b,|三,| d, e, f|]
,使用|
作为列表values
中索引 0、2、3、6 的拆分器:a
和b
属于第一列c
属于第二列d
,e
anff
属于第三列- 请注意
ColPointers
始终以 0 开头并以一个数字结束,该数字是values
的长度(此处为6
)
关于python - 如何使用 Spark 创建稀疏 CSCMatrix?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44825193/