給定一個任意numpy數組(ndarray
),有沒有函數或簡短的方法將它轉換爲scipy.sparse
矩陣?numpy數組到scipy.sparse矩陣
我想要的東西,就像:
A = numpy.array([0,1,0],[0,0,0],[1,0,0])
S = to_sparse(A, type="csr_matrix")
給定一個任意numpy數組(ndarray
),有沒有函數或簡短的方法將它轉換爲scipy.sparse
矩陣?numpy數組到scipy.sparse矩陣
我想要的東西,就像:
A = numpy.array([0,1,0],[0,0,0],[1,0,0])
S = to_sparse(A, type="csr_matrix")
我平時做這樣的事情
>>> import numpy, scipy.sparse
>>> A = numpy.array([[0,1,0],[0,0,0],[1,0,0]])
>>> Asp = scipy.sparse.csr_matrix(A)
>>> Asp
<3x3 sparse matrix of type '<type 'numpy.int64'>'
with 2 stored elements in Compressed Sparse Row format>
一個非常有用和相關的例子是在幫助!
import scipy.sparse as sp
help(sp)
這給:
Example 2
---------
Construct a matrix in COO format:
>>> from scipy import sparse
>>> from numpy import array
>>> I = array([0,3,1,0])
>>> J = array([0,3,1,2])
>>> V = array([4,5,7,9])
>>> A = sparse.coo_matrix((V,(I,J)),shape=(4,4))
另外值得一提的各種構造函數(再次從幫助):
1. csc_matrix: Compressed Sparse Column format
2. csr_matrix: Compressed Sparse Row format
3. bsr_matrix: Block Sparse Row format
4. lil_matrix: List of Lists format
5. dok_matrix: Dictionary of Keys format
6. coo_matrix: COOrdinate format (aka IJV, triplet format)
7. dia_matrix: DIAgonal format
To construct a matrix efficiently, use either lil_matrix (recommended) or
dok_matrix. The lil_matrix class supports basic slicing and fancy
indexing with a similar syntax to NumPy arrays.
你的例子就是這麼簡單:
S = sp.csr_matrix(A)
嗯,這很容易,我應該嘗試過。我沒想到構造函數會進行轉換。這也適用於其他稀疏矩陣類型的構造函數。 – clstaudt