98 votes

Comment transformer numpy.matrix ou array en matrice scipy sparse

Pour la matrice creuse SciPy, on peut utiliser todense() ou toarray() pour transformer en matrice ou en tableau NumPy. Quelles sont les fonctions pour faire l'inverse ?

J'ai cherché, mais je n'ai aucune idée des mots-clés qui devraient être le bon résultat.

140voto

David Alber Points 6205

Vous pouvez passer un tableau ou une matrice numpy comme argument lors de l'initialisation d'une matrice creuse. Pour une matrice RSE, par exemple, vous pouvez effectuer les opérations suivantes.

 >>> 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

1voto

Quant à l'inverse, la fonction est inv(A) , mais je ne recommanderai pas de l'utiliser, car pour les matrices énormes, elle est très coûteuse en calcul et instable. Au lieu de cela, vous devriez utiliser une approximation de l'inverse, ou si vous voulez résoudre Ax = b, vous n'avez pas vraiment besoin de A -1 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X