創建稀疏矩陣 - MATLAB sparse - MathWorks 中國
python - numpy/scipy equivalent of MATLAB's sparse function - Stack Overflow
S = sparse(i,j,v,m,n) 將 S 的大小指定為 m×n。
等效的python操作是
import numpy as np
import scipy.sparse as sps
H = sps.csr_matrix((V, (I, J)), shape=(m,n),dtype= np.int32)
其中I向量(數組)記錄非零元素行的位置,J向量(數組)表示非零元素列的位置,V向量表示非零元素值,(也可以指定其中部分元素為0),稀疏是一種存儲優化方法,未必就是只保存非0元素。
m2 = sps.csr_matrix(([3,1], ([2,1], [2,3])), dtype=np.float)
m2.todense()
[3,1]兩個非稀疏化元素,一個是3,一個是1
[2,1]記錄了行位置,[2,3]記錄了列位置,3在(2,2),1在(1,3)
matrix([[0., 0., 0., 0.],
[0., 0., 0., 1.],
[0., 0., 3., 0.]])
m2 = sps.csr_matrix(([3,0], ([2,1], [2,3])), dtype=np.float)
m2.todense()
matrix([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 3., 0.]])