2017-06-29 50 views
1

火花文檔,創建pyspark.ml.linalg.SparseMatrix說:如何使用Spark創建稀疏的CSCMatrix?

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?它表示它們代表了與新專欄開頭相對應的索引,但我仍然無法用頭圍住它。

回答

5

使用在你的矩陣的字母讓閱讀更輕鬆:

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索引2所以)ab屬於相同的第一列中,
    • (然後在values索引3左右)c是單獨在第二列中分裂,
    • (然後分裂在values index 6 so)d,ef屬於同一第三列。

注意的ColPointers第一個值是0荃其最後一個值是百達的價值values