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 :
- Block Sparse Row Matrix
- Eine spärliche Matrix im COOrdinate-Format.
- Komprimierte Sparse Column-Matrix
- Komprimierte Sparse Row-Matrix
- Sparse Matrix mit DIAgonal Speicher
- Dictionary Of Keys-basierte Sparse-Matrix.
- Zeilenbasierte Liste der Listen mit geringer Dichte
- Diese Klasse bietet eine Basisklasse für alle dünn besetzten Matrizen.
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
import numpy as np
from scipy.sparse import csr_matrix, csc_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/