Comment transformer numpy.matrice ou un tableau de scipy sparse matrix
3 réponses
Vous pouvez passer un tableau numpy ou une matrice en argument lors de l'initialisation d'une matrice creuse. Pour une matrice de RSE, par exemple, vous pouvez faire ce qui suit.
>>> 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
il y a plusieurs classes de matrice éparses dans scipy.
bsr_matrix(arg1[, forme, dtype, de copie, de la taille de bloc]) Bloc Éparses Ligne de la matrice
coo_matrix(arg1[, forme, dtype, copie]) d'Une matrice creuse dans un format de Coordonnées.
csc_matrix(arg1[, forme, dtype, copie]) Compressed Sparse Colonne de la matrice
csr_matrix(arg1[, forme, dtype, copie]) Compressed Sparse Ligne de la matrice
dia_matrix(arg1[, forme, dtype, copie]) Matrice clairsemée avec stockage en diagonale
dok_matrix(arg1[, forme, dtype, copie]) Dictionnaire Des Touches de matrices creuses.
lil_matrix (arg1 [, shape, dtype, copy])--2-->
Aucun d'entre eux peut faire la conversion.
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
voir http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information .
Comme pour l'inverse, la fonction est inv(A)
, mais je ne recommande pas de l'utiliser, car pour les grosses matrices, il est très coûteux et instable sur le plan informatique. A la place, vous devriez utiliser une approximation de l'inverse, ou si vous voulez résoudre Ax = b vous n'avez pas vraiment besoin d'un -1.