Für eine SciPy-Sparse-Matrix kann eine NumPy-Matrix oder ein Array verwendet todense()
oder toarray()
transformiert werden. Was sind die Funktionen, um das Inverse zu tun?
Ich habe gesucht, aber keine Ahnung, welche Keywords der richtige Treffer sein sollten.
python
numpy
scipy
sparse-matrix
Flocke
quelle
quelle
sparse.csr_matrix
Es gibt mehrere spärliche Matrixklassen in scipy.
Jeder von ihnen kann die Konvertierung durchführen.
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
Siehe http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information .
quelle
Die Umkehrung ist die Funktion
inv(A)
, aber ich werde sie nicht empfehlen, da sie für große Matrizen sehr rechenintensiv und instabil ist. Stattdessen sollten Sie eine Annäherung an die Umkehrung verwenden, oder wenn Sie Ax = b lösen möchten, benötigen Sie A -1 nicht wirklich .quelle
In Python kann die Scipy-Bibliothek verwendet werden, um die 2D -NumPy-Matrix in eine Sparse-Matrix zu konvertieren. SciPy 2-D Sparse-Matrix-Paket für numerische Daten ist scipy.sparse
Das Paket scipy.sparse bietet verschiedene Klassen, um die folgenden Arten von Sparse-Matrizen aus der zweidimensionalen Matrix zu erstellen :
Die Formate CSR (Compressed Sparse Row) oder CSC (Compressed Sparse Column) unterstützen effiziente Zugriffs- und Matrixoperationen.
Beispielcode zum Konvertieren einer Numpy-Matrix in eine CSC-Matrix (Compressed Sparse Column) und einer CSR-Matrix (Compressed Sparse Row) mithilfe von Scipy-Klassen:
import sys # Return the size of an object in bytes import numpy as np # To create 2 dimentional matrix from scipy.sparse import csr_matrix, csc_matrix # csr_matrix: used to create compressed sparse row matrix from Matrix # csc_matrix: used to create compressed sparse column matrix from Matrix
Erstellen Sie eine 2-D-Numpy-Matrix
A = np.array([[1, 0, 0, 0, 0, 0],\ [0, 0, 2, 0, 0, 1],\ [0, 0, 0, 2, 0, 0]]) print("Dense matrix representation: \n", A) print("Memory utilised (bytes): ", sys.getsizeof(A)) print("Type of the object", type(A))
Drucken Sie die Matrix und andere Details aus:
Dense matrix representation: [[1 0 0 0 0 0] [0 0 2 0 0 1] [0 0 0 2 0 0]] Memory utilised (bytes): 184 Type of the object <class 'numpy.ndarray'>
Konvertieren von Matrix A in die komprimierte Matrixmatrixdarstellung mit geringer Dichte mithilfe von csr_matrix Klasse:
S = csr_matrix(A) print("Sparse 'row' matrix: \n",S) print("Memory utilised (bytes): ", sys.getsizeof(S)) print("Type of the object", type(S))
Die Ausgabe von print-Anweisungen:
Sparse 'row' matrix: (0, 0) 1 (1, 2) 2 (1, 5) 1 (2, 3) 2 Memory utilised (bytes): 56 Type of the object: <class 'scipy.sparse.csr.csc_matrix'>
Konvertieren von Matrix A in eine komprimierte sparsame Spaltenmatrixdarstellung mit csc_matrix Klasse:
S = csc_matrix(A) print("Sparse 'column' matrix: \n",S) print("Memory utilised (bytes): ", sys.getsizeof(S)) print("Type of the object", type(S))
Die Ausgabe von print-Anweisungen:
Sparse 'column' matrix: (0, 0) 1 (1, 2) 2 (2, 3) 2 (1, 5) 1 Memory utilised (bytes): 56 Type of the object: <class 'scipy.sparse.csc.csc_matrix'>
Wie zu sehen ist, beträgt die Größe der komprimierten Matrizen 56 Bytes und die ursprüngliche Matrixgröße 184 Bytes.
Eine ausführlichere Erklärung und Codebeispiele finden Sie in diesem Artikel: https://limitlessdatascience.wordpress.com/2020/11/26/sparse-matrix-in-machine-learning/
quelle