Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich eine Sparse-Matrix in Python?

Wie erstelle ich eine Sparse-Matrix in Python?

PHPz
PHPznach vorne
2023-09-05 15:49:061183Durchsuche

Wie erstelle ich eine Sparse-Matrix in Python?

In diesem Artikel zeigen wir Ihnen, was eine Sparse-Matrix ist und wie Sie eine Sparse-Matrix in Python erstellen.

Was ist eine dünn besetzte Matrix?

Eine dünn besetzte Matrix ist eine Matrix, in der die meisten Elemente 0 sind. Das heißt, die Matrix enthält Daten nur für wenige Standorte. Der größte Teil des von einer dünn besetzten Matrix belegten Speichers besteht aus Nullen.

Zum Beispiel -

M = [
   [1, 0, 0, 0],
   [0, 0, 3, 0],
   [0, 0, 0, 0],
   [0, 0, 0, 2]
]

Die Verwendung eines 2D-Arrays zur Darstellung einer dünn besetzten Matrix verschwendet viel Speicher, da die Nullen in der Matrix in den meisten Fällen nutzlos sind. Anstatt also Null zusammen mit Nicht-Null-Elementen zu speichern, speichern wir nur Nicht-Null-Elemente. Dabei werden Tripel verwendet, um Nicht-Null-Elemente (Zeile, Spalte, Wert) zu speichern.

Natural Language Processing (NLP) und Datenkodierung nutzen beide stark besetzte Matrizen. Wenn die meisten Matrixelemente 0 sind, sind die Speicherkosten für die Speicherung aller Matrixelemente hoch.

Das liegt daran, dass wir nur wenige Datenpunkte haben und der größte Teil des Speicherplatzes durch redundante Nullen belegt ist.

Vorteile dünn besetzter Matrizen

Hier sind die beiden Hauptvorteile der Verwendung von spärlichen Matrizen anstelle einfacher Matrizen –

  • Speicher – Da es weniger Nicht-Null-Elemente als Null gibt, kann weniger Speicher verwendet werden, um diese Elemente einzeln zu speichern.

  • Rechenzeit – Rechenzeit kann gespart werden, indem logisch eine Datenstruktur erstellt wird, die nur Elemente ungleich Null durchläuft.

Wie erstelle ich eine Sparse-Matrix in Python?

ScPy in Python bietet Tools zum Erstellen dünn besetzter Matrizen unter Verwendung verschiedener Datenstrukturen und zum Konvertieren dichter Matrizen in dünn besetzte Matrizen.

In Python können wir mit der folgenden Funktion eine dünn besetzte Matrix erstellen -

  • csr_matrix()-Funktion – Erstellt eine dünn besetzte Matrix im komprimierten sparse row-Format,

  • csc_matrix()-Funktion – Erstellt eine Sparse-Matrix im komprimierten Sparse Column-Format. ,,

Methode 1. Verwenden Sie die Funktion csr_matrix(), um eine dünn besetzte Matrix zu erstellen

Es werden dünn besetzte Matrizen im komprimierten, dünn besetzten Zeilen-Format erstellt.

Grammatik

scipy.sparse.csr_matrix(shape=None, dtype=None)

Parameter

  • Form – es ist die Form der Matrix

  • dtype – Es ist der Datentyp der Matrix

Algorithmus (Schritte)

Hier sind die Algorithmen/Schritte, die befolgt werden müssen, um die erforderliche Aufgabe auszuführen -

  • Verwenden Sie das Schlüsselwort import, um das numpy-Modul mit einem Alias ​​(np) zu importieren.

  • Verwenden Sie das Schlüsselwort import, um die Funktion csr_matrix aus dem Scipy-Modul zu importieren.

  • Verwenden Sie die Funktion csr_matrix(), um eine 3 * 3-Sparse-Matrix vom Datentyp int (row-Format) zu erstellen und mit der Funktion toarray() in ein Array zu konvertieren.

  • Drucken Sie die generierte Sparse-Matrix.

Beispiel

Das folgende Programm verwendet die Funktion csr_matrix(), um eine dünn besetzte Matrix (3x3) zurückzugeben -

# importing numpy module with an alias name
import numpy as np

# importing csr_matrix function from scipy module
from scipy.sparse import csr_matrix

# Using csr_matrix function to create a 3 * 3 sparse matrix of int datatype
# and converting into array
sparse_matrix = csr_matrix((3, 3), dtype = np.int8).toarray()

# printing the resultant sparse matrix
print("The resultant sparse matrix:\n", sparse_matrix)

Ausgabe

Bei der Ausführung generiert das obige Programm die folgende Ausgabe:

The resultant sparse matrix:
 [[0 0 0]
 [0 0 0]
 [0 0 0]]

Methode 2. Erstellen Sie eine dünn besetzte Matrix mit der Funktion csr_matrix() anhand eines Numpy-Arrays

Algorithmus (Schritte)

Hier sind die Algorithmen/Schritte, die befolgt werden müssen, um die erforderliche Aufgabe auszuführen -

  • Verwenden Sie das Schlüsselwort import, um das numpy-Modul mit einem Alias ​​(np) zu importieren.

  • Verwenden Sie das Schlüsselwort import, um die Funktion csr_matrix aus dem Scipy-Modul zu importieren.

  • Verwenden Sie die Funktion numpy.array(), um ein Array zu erstellen (gibt ein Ndarray zurück. Ein Ndarray ist ein Array-Objekt, das die angegebenen Anforderungen erfüllt)

Beispiel

# importing numpy module with alias name
import numpy as np

# importing csr_matrix function from scipy module
from scipy.sparse import csr_matrix

# Giving rows and columns values
rows = np.array([0, 1, 0, 2, 1, 1])
columns = np.array([1, 0, 0, 2, 1, 2])

# Giving array data
arrayData = np.array([1, 3, 2, 5, 7, 6])

# Using csr_matrix function to create a 3x3 sparse matrix
sparse_matrix = csr_matrix((arrayData, (rows, columns)),
   shape = (3, 3)).toarray()

# print the resultant sparse matrix
print("The resultant sparse matrix:\n", sparse_matrix)

Ausgabe

Bei der Ausführung generiert das obige Programm die folgende Ausgabe:

The resultant sparse matrix:
 [[2 1 0]
 [3 7 6]
 [0 0 5]]

Methode 3. Verwenden Sie die Funktion csc_matrix(), um eine dünn besetzte Matrix zu erstellen

Es werden spärliche Matrizen im komprimierten Sparse-Spaltenformat erstellt.

Grammatik

scipy.sparse.csc_matrix(shape=None, dtype=None)

Parameter

  • Form – es ist die Form der Matrix

  • dtype – Es ist der Datentyp der Matrix

Algorithmus

Hier sind die Algorithmen/Schritte, die befolgt werden müssen, um die erforderliche Aufgabe auszuführen -

  • Verwenden Sie das Schlüsselwort import, um das numpy-Modul mit einem Alias ​​(np) zu importieren.

  • Verwenden Sie das Schlüsselwort import, um die Funktion csc_matrix aus dem Scipy-Modul zu importieren.

  • Erstellen Sie mit der Funktion csc_matrix() eine 3*3-Sparse-Matrix vom Datentyp int (columnformat) und konvertieren Sie sie mit der Funktion toarray() in ein Array.

  • Drucken Sie die generierte Sparse-Matrix.

Beispiel

Das folgende Programm gibt mit der Funktion csc_matrix() eine dünn besetzte Matrix (3x3) im Spaltenformat zurück -

# importing numpy module with an alias name
import numpy as np

# importing csc_matrix function from scipy module
from scipy.sparse import csc_matrix

# Using csc_matrix function to create a 3 * 3 sparse matrix of int datatype
# and converting into array
sparse_matrix = csc_matrix((3, 3), dtype = np.int8).toarray()

# printing the resultant sparse matrix
print("The resultant sparse matrix:\n", sparse_matrix)

Ausgabe

Bei der Ausführung generiert das obige Programm die folgende Ausgabe:

The resultant sparse matrix:
 [[0 0 0]
 [0 0 0]
 [0 0 0]]

Methode 4. Erstellen Sie eine dünn besetzte Matrix mit der Funktion csc_matrix() anhand eines Numpy-Arrays

Beispiel

Das folgende Programm verwendet die Funktion csc_matrix(), um eine dünn besetzte Matrix (3x3) im Ganzzahlspaltenformat zurückzugeben -

import numpy as np
# importing csc_matrix function from scipy module
from scipy.sparse import csc_matrix

# Giving rows and columns values
rows = np.array([0, 1, 0, 2, 1, 1])
columns = np.array([1, 0, 0, 2, 1, 2])

# Giving array data
arrayData = np.array([1, 3, 2, 5, 7, 6])

# Using csc_matrix function to create a 3x3 sparse matrix in column format
sparse_matrix = csc_matrix((arrayData, (rows, columns)),
   shape = (3, 3)).toarray()

# print the resultant sparse matrix
print("The resultant sparse matrix:\n", sparse_matrix)

Ausgabe

Bei der Ausführung generiert das obige Programm die folgende Ausgabe:

The resultant sparse matrix:
 [[2 1 0]
 [3 7 6]
 [0 0 5]]

Fazit

In diesem Tutorial haben wir vier verschiedene Möglichkeiten kennengelernt, spärliche Matrizen in Python zu generieren. Wir haben auch gelernt, wie man aus einem Numpy-Array eine dünn besetzte Matrix generiert.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Sparse-Matrix in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen