scipy.sparse.

coo_matrix#

class scipy.sparse.coo_matrix(arg1, shape=None, dtype=None, copy=False, *, maxprint=None)[Quelle]#

Eine dünnbesetzte Matrix im COOrdinate-Format.

Auch bekannt als das „ijv“- oder „Triplet“-Format.

Dies kann auf verschiedene Arten instanziiert werden
coo_matrix(D)

wobei D ein 2-D ndarray ist

coo_matrix(S)

mit einem anderen dünnbesetzten Array oder einer dünnbesetzten Matrix S (entspricht S.tocoo())

coo_matrix((M, N), [dtype])

zur Erstellung einer leeren Matrix mit der Form (M, N). dtype ist optional und standardmäßig auf dtype='d' gesetzt.

coo_matrix((data, (i, j)), [shape=(M, N)])
zur Konstruktion aus drei Arrays
  1. data[:] die Einträge der Matrix, in beliebiger Reihenfolge

  2. i[:] die Zeilenindizes der Matrixeinträge

  3. j[:] die Spaltenindizes der Matrixeinträge

Wobei A[i[k], j[k]] = data[k]. Wenn die Form nicht angegeben ist, wird sie aus den Index-Arrays abgeleitet.

Attribute:
dtypedtype

Datentyp der Matrix

shape2-Tupel

Form der Matrix

ndimint

Anzahl der Dimensionen (dies ist immer 2)

nnz

Anzahl der gespeicherten Werte, einschließlich expliziter Nullen.

size

Anzahl der gespeicherten Werte.

data

COO-Format Daten-Array der Matrix

row

COO-Format Zeilenindex-Array der Matrix

col

COO-Format Spaltenindex-Array der Matrix

has_canonical_formatbool

Ob die Matrix sortierte Indizes und keine Duplikate hat.

format

Formatzeichenkette für Matrix.

T

Transponierte.

Methoden

__len__()

__mul__(other)

arcsin()

Elementweise Arcussinus.

arcsinh()

Elementweise Arcusshinus.

arctan()

Elementweise Arctangens.

arctanh()

Elementweise Arcustangens.

argmax([axis, out, explicit])

Gibt die Indizes der maximalen Elemente entlang einer Achse zurück.

argmin([axis, out, explicit])

Gibt die Indizes der minimalen Elemente entlang einer Achse zurück.

asformat(format[, copy])

Gibt dieses Array/diese Matrix im übergebenen Format zurück.

asfptype()

Matrix in Fließkommaformat hochstapeln (falls erforderlich)

astype(dtype[, casting, copy])

Gibt die Elemente des Arrays/der Matrix in einem angegebenen Typ aus.

ceil()

Elementweise Aufrundung.

conj([copy])

Elementweise komplexe Konjugation.

conjugate([copy])

Elementweise komplexe Konjugation.

copy()

Gibt eine Kopie dieses Arrays/dieser Matrix zurück.

count_nonzero([axis])

Anzahl der Nicht-Null-Einträge, äquivalent zu

deg2rad()

Elementweise Umrechnung von Grad in Radiant.

diagonal([k])

Gibt die k-te Diagonale des Arrays/der Matrix zurück.

dot(other)

Gibt das Skalarprodukt zweier Arrays zurück.

eliminate_zeros()

Entfernt Nulleinträge aus dem Array/der Matrix

expm1()

Elementweise expm1.

floor()

Elementweise Abrundung.

getH()

Gibt die hermitesche Transponierte dieser Matrix zurück.

get_shape()

Ruft die Form der Matrix ab

getcol(j)

Gibt eine Kopie der Spalte j der Matrix als (m x 1) Sparse-Matrix (Spaltenvektor) zurück.

getformat()

Matrixspeicherformat

getmaxprint()

Maximale Anzahl von Elementen, die beim Drucken angezeigt werden.

getnnz([axis])

Anzahl der gespeicherten Werte, einschließlich expliziter Nullen.

getrow(i)

Gibt eine Kopie der Zeile i der Matrix als (1 x n) Sparse-Matrix (Zeilenvektor) zurück.

log1p()

Elementweise log1p.

max([axis, out, explicit])

Gibt das Maximum des Arrays/der Matrix oder das Maximum entlang einer Achse zurück.

maximum(other)

Elementweises Maximum zwischen diesem und einem anderen Array/einer anderen Matrix.

mean([axis, dtype, out])

Berechnet das arithmetische Mittel entlang der angegebenen Achse.

min([axis, out, explicit])

Gibt das Minimum des Arrays/der Matrix oder das Maximum entlang einer Achse zurück.

minimum(other)

Elementweises Minimum zwischen diesem und einem anderen Array/einer anderen Matrix.

multiply(other)

Elementweise Multiplikation mit einem anderen Array/einer anderen Matrix.

nanmax([axis, out, explicit])

Gibt das Maximum zurück und ignoriert alle NaNs entlang einer Achse.

nanmin([axis, out, explicit])

Gibt das Minimum zurück und ignoriert alle NaNs entlang einer Achse.

nonzero()

Nicht-Null-Indizes des Arrays/der Matrix.

power(n[, dtype])

Diese Funktion führt elementweise Potenzierung durch.

rad2deg()

Elementweise Umrechnung von Radiant in Grad.

reshape(self, shape[, order, copy])

Gibt einem Sparse Array/einer Sparse Matrix eine neue Form, ohne dessen/deren Daten zu ändern.

resize(*shape)

Ändert die Größe des Arrays/der Matrix direkt auf die durch shape gegebenen Dimensionen.

rint()

Elementweise Rundung zur nächsten ganzen Zahl.

set_shape(shape)

Setzt die Form der Matrix inplace

setdiag(values[, k])

Setzt diagonale oder nicht-diagonale Elemente des Arrays/der Matrix.

sign()

Elementweises Vorzeichen.

sin()

Elementweise Sinus.

sinh()

Elementweise Sinus hyperbolicus.

sqrt()

Elementweise Quadratwurzel.

sum([axis, dtype, out])

Summiert die Elemente des Arrays/der Matrix über eine gegebene Achse.

sum_duplicates()

Entfernt Duplikateinträge, indem sie addiert werden.

tan()

Elementweise Tangens.

tanh()

Elementweise Tangens hyperbolicus.

tensordot(other[, axes])

Gibt das Tensordot-Produkt mit einem anderen Array entlang der angegebenen Achsen zurück.

toarray([order, out])

Gibt eine dichte ndarray-Darstellung dieses Sparse Arrays/dieser Sparse Matrix zurück.

tobr([blocksize, copy])

Konvertiert dieses Array/diese Matrix in das Block Sparse Row (BSR)-Format.

tocoo([copy])

Konvertiert dieses Array/diese Matrix in das COOrdinate (COO)-Format.

tocsc([copy])

Diese Array/Matrix in das Compressed Sparse Column (CSC)-Format konvertieren

tocsr([copy])

Diese Array/Matrix in das Compressed Sparse Row-Format konvertieren

todense([order, out])

Gibt eine dichte Darstellung dieser Sparse-Matrix zurück.

todia([copy])

Konvertiert dieses Array/diese Matrix in das sparse DIAgonal-Format.

todok([copy])

Konvertiert dieses Array/diese Matrix in das Dictionary Of Keys (DOK)-Format.

tolil([copy])

Konvertiert dieses Array/diese Matrix in das List of Lists (LIL)-Format.

trace([offset])

Gibt die Summe entlang der Diagonalen des Sparse Arrays/der Sparse Matrix zurück.

transpose([axes, copy])

Kehrt die Dimensionen des Sparse Arrays/der Sparse Matrix um.

trunc()

Elementweise Trunkierung.

Hinweise

Sparse-Matrizen können in arithmetischen Operationen verwendet werden: sie unterstützen Addition, Subtraktion, Multiplikation, Division und Matrixpotenz.

Vorteile des COO-Formats
  • ermöglicht schnelle Konvertierung zwischen dünnbesetzten Formaten

  • erlaubt doppelte Einträge (siehe Beispiel)

  • sehr schnelle Konvertierung zu und von CSR/CSC-Formaten

Nachteile des COO-Formats
  • unterstützt nicht direkt
    • arithmetische Operationen

    • Slicing

Beabsichtigte Verwendung
  • COO ist ein schnelles Format zum Konstruieren dünnbesetzter Matrizen.

  • Nachdem eine COO-Matrix konstruiert wurde, konvertieren Sie sie in das CSR- oder CSC-Format für schnelle Arithmetik und Matrix-Vektor-Operationen.

  • Beim Konvertieren in das CSR- oder CSC-Format werden doppelte (i,j)-Einträge standardmäßig summiert. Dies ermöglicht die effiziente Konstruktion von finiten Elementmatrizen und ähnlichem. (siehe Beispiel)

Kanonisches Format
  • Einträge und Koordinaten sortiert nach Zeile, dann Spalte.

  • Es gibt keine doppelten Einträge (d. h. doppelte (i,j)-Positionen).

  • Daten-Arrays KÖNNEN explizite Nullen enthalten.

Beispiele

>>> # Constructing an empty matrix
>>> import numpy as np
>>> from scipy.sparse import coo_matrix
>>> coo_matrix((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)
>>> # Constructing a matrix using ijv format
>>> row  = np.array([0, 3, 1, 0])
>>> col  = np.array([0, 3, 1, 2])
>>> data = np.array([4, 5, 7, 9])
>>> coo_matrix((data, (row, col)), shape=(4, 4)).toarray()
array([[4, 0, 9, 0],
       [0, 7, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 5]])
>>> # Constructing a matrix with duplicate coordinates
>>> row  = np.array([0, 0, 1, 3, 1, 0, 0])
>>> col  = np.array([0, 2, 1, 3, 1, 0, 0])
>>> data = np.array([1, 1, 1, 1, 1, 1, 1])
>>> coo = coo_matrix((data, (row, col)), shape=(4, 4))
>>> # Duplicate coordinates are maintained until implicitly or explicitly summed
>>> np.max(coo.data)
1
>>> coo.toarray()
array([[3, 0, 1, 0],
       [0, 2, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 1]])