如何理解sparse.csr_matrix

CSR方法採取按行壓縮的辦法, 將原始的矩陣用三個數組進行表示

和大家分享下我怎樣理解的

from scipy import sparsedata = np.array([1, 2, 3, 4, 5, 6]) #所有的非零數值indices = np.array([0, 2, 2, 0, 1, 2]) #所有值得列索引indptr = np.array([0, 2, 3, 6]) #每行的的非零數據 data[i,i+1]mtx = sparse.csr_matrix((data,indices,indptr),shape=(3,3))mtx.todense()

1、首先是考慮每行的非零數值,數值在data里,

data的里的那幾個,索引在indptr中,注意其中每個值是每行中一個值在data中的索引,

故矩陣第0行 data[ indptr[0], indptr[1] ], 即data[0,2], 為數據1,2;

2、這些數值的列索引

由於已經得到矩陣中每行的非零數值,而所有的非零數值的列索引又存在indices中,則把這些數值對應的索引找出來就ok了

indptr[0],indptr[1],對應數值在indices中對應的列索引

故indices[ indptr[0], indptr[1] ] indices[0,2] , 所以所以為0, 2

3、對i行

非零數值有data[ indptr[i], indptr[i+1] ]

非零數值的列索引有indices[ indptr[i], indptr[i+1] ]

總結:三個數組中data最好理解所有非零數值,indices和data值對應每一個數值的列索引,每行的值得索引在indptr中(本行的第一個索引開始,到下一行開頭結束),從而得到每行值的數值個數,再去indices中配對列索引,然後構造矩陣。

推薦閱讀:

RNN(循環神經網路)-2
全面理解word2vec
【機器學習】監督學習技巧整理概述
機器學習中的Optimal Transport及相關問題:(二)計算方法

TAG:機器學習 | 數據分析 |