W przypadku matrycy rzadki Scipy, można użyć todense() lub toarray(), aby przekształcić się do numpy matrycy lub tablicy. Jakie są funkcje, aby zrobić odwrotność?

Szukałem, ale nie mam pojęcia, jakie słowa kluczowe powinny być prawym trafieniem.

86
Flake 28 październik 2011, 01:14

3 odpowiedzi

Najlepsza odpowiedź

Możesz przekazać macierzę lub matrycę jako argument przy inicjowaniu rzadkiej matrycy. Na przykład dla macierzy CSR można wykonać następujące czynności.

>>> 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
127
David Alber 27 październik 2011, 21:29

W Scipiciu jest kilka rzadkich klas matrycowych.

bsr_matrix (arg1 [, kształt, dtype, kopiowanie, blocksize]) blok rzadki rzędowy Matrix
coo_matrix (arg1 [, kształt, dtype, kopiuj]) rzadki matryca w formacie współrzędnych.
CSC_MATRIX (Arg1 [, Kształt, Dype, Kopiuj]) Skompresowana rzadka kolumna Matrix
csr_matrix (arg1 [, kształt, dtype, kopiuj]) skompresowany rzadki rzędowy matryca
Dia_Matrix (Arg1 [, Kształt, Dype, Kopiuj]) Matryca rzadka z przekątną pamięcią masową
Dok_Matrix (Arg1 [, Kształt, Dype, Kopiuj] Słownik rzadkiej Matrix Keys.
Lil_Matrix (Arg1 [, Kształt, Dype, Kopiuj]) Lista ogarona Lista rzadki Matryca

Każdy z nich może wykonać konwersję.

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

Zobacz http://docs.scipy.org/doc/scipy/ Odniesienie / Źródło.html # Informacje o użytkowaniu.

23
cyborg 27 październik 2011, 23:45

Jeśli chodzi o odwrotność, funkcja jest inv(A), ale nie zalecam go używa, ponieważ dla ogromnych macierzy jest bardzo obliczalnie kosztowne i niestabilne. Zamiast tego powinieneś użyć przybliżenia do odwrotności lub jeśli chcesz rozwiązać AX = B tak naprawdę nie potrzebujesz -1 .

0
Laurel 30 lipiec 2016, 23:46