2011-10-27 14 views

cevap

63

Seyrek bir matrisi başlatırken numpy dizisini veya matrisi argüman olarak geçirebilirsiniz. Bir CSR matrisi için, örneğin, aşağıdakileri yapabilirsiniz.

>>> import numpy as np 
>>> from scipy import sparse 
>>> A = np.array([[1,2,0],[0,0,3],[1,0,4]]) 
>>> B = np.matrix([[1,2,0],[0,0,3],[1,0,4]]) 

>>> A 
array([[1, 2, 0], 
     [0, 0, 3], 
     [1, 0, 4]]) 

>>> sA = sparse.csr_matrix(A) # Here's the initialization of the sparse matrix. 
>>> sB = sparse.csr_matrix(B) 

>>> sA 
<3x3 sparse matrix of type '<type 'numpy.int32'>' 
     with 5 stored elements in Compressed Sparse Row format> 

>>> print sA 
    (0, 0)  1 
    (0, 1)  2 
    (1, 2)  3 
    (2, 0)  1 
    (2, 2)  4 
16

Scipy'de birkaç seyrek matris sınıfı vardır.

bsr_matrix (ARG1 [, şekil, d_type, kopyalama, blok boyutu]) Blok Seyrek Sıra matris
coo_matrix (ARG1 [, şekil, d_type, kopyalama]) seyrek bir matris biçimi koordine ederler.
csc_matrix (ARG1 [, şekil, d_type, kopyalama]) sıkıştırılmış seyrek sütun matrisi
csr_matrix (ARG1 [, şekil, d_type, kopyalama]) Seyrek Sıra Matrisi
dia_matrix Sıkıştırılmış (ARG1 [, şekil, d_type, kopyalama]) DIOgonal depolama
dok_matrix (arg1 [, şekil, dtype, copy]) ile Seyrek matris Anahtar temelli seyrek matris.
lil_matrix (ARG1 [, şekil, d_type, kopyalama]) sıra tabanlı bağlantılı liste eksik matris

bunların herhangi bir dönüştürme yapabilir.

import numpy as np 
from scipy import sparse 
a=np.array([[1,0,1],[0,0,1]]) 
b=sparse.csr_matrix(a) 
print(b) 

(0, 0) 1 
(0, 2) 1 
(1, 2) 1 

Bkz. http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information.

3

Ters olarak, işlev inv(A)'dur, ancak bunu kullanmamayacağım, çünkü büyük matrisler için çok hesaplı maliyetli ve kararsızdır. Bunun yerine, tersine bir yaklaşım kullanmalısınız veya Ax = b'yi çözmek istiyorsanız, A -1'a ihtiyacınız yoktur.