safely_cast_index_arrays#
- scipy.sparse.safely_cast_index_arrays(A, idx_dtype=<class 'numpy.int32'>, msg='')[Quelle]#
Sicheres Umwandeln von Index-Arrays von Sparse-Arrays in idx_dtype.
Überprüft die Form von A, um festzustellen, ob die Index-Arrays sicher in den Datentyp idx_dtype umgewandelt werden können. Wenn eine Dimension in der Form größer ist, als in den Datentyp passt, ist die Umwandlung unsicher, und es wird ein
ValueErrorausgelöst. Wenn sicher, werden die Index-Arrays in idx_dtype umgewandelt und das Ergebnis zurückgegeben, ohne die Eingabe A zu ändern. Der Aufrufer kann die Ergebnisse bei Bedarf A-Attributen zuweisen oder die umgewandelten Index-Arrays direkt verwenden.Sofern keine Herabstufung erforderlich ist, werden die ursprünglichen Index-Arrays zurückgegeben. Sie können z. B. testen
A.indptr is new_indptr, um zu sehen, ob eine Herabstufung stattgefunden hat.Hinzugefügt in Version 1.15.0.
- Parameter:
- ASparse-Array oder -Matrix
Das Array, dessen Index-Arrays herabgestuft werden sollen.
- idx_dtypeDatentyp
Gewünschter Datentyp. Sollte ein Integer-Datentyp sein (Standard:
np.int32). Die meisten scipy.sparse verwenden entweder int64 oder int32.- msgString, optional
Ein String, der am Ende der Fehlermeldung
ValueErrorangehängt wird, wenn die Form des Arrays zu groß ist, um in idx_dtype zu passen. Die Fehlermeldung lautetf"<index> values too large for {msg}". Sie sollte angeben, warum die Herabstufung erforderlich ist, z. B. „SuperLU“, und standardmäßig f „dtype {idx_dtype}“.
- Rückgabe:
- idx_arraysndarray oder Tupel von ndarrays
Basierend auf
A.formatwerden die Index-Arrays nach der Umwandlung in idx_dtype zurückgegeben. Für CSC/CSR wird(indices, indptr)zurückgegeben. Für COO wirdcoordszurückgegeben. Für DIA wirdoffsetszurückgegeben. Für BSR wird(indices, indptr)zurückgegeben.
- Löst aus:
- ValueError
Wenn die Form des Arrays nicht in den neuen Datentyp passt oder wenn das Sparse-Format keine Index-Arrays verwendet.
Beispiele
>>> import numpy as np >>> from scipy import sparse >>> data = [3] >>> coords = (np.array([3]), np.array([1])) # Note: int64 arrays >>> A = sparse.coo_array((data, coords)) >>> A.coords[0].dtype dtype('int64')
>>> # rescast after construction, raising exception if shape too big >>> coords = sparse.safely_cast_index_arrays(A, np.int32) >>> A.coords[0] is coords[0] # False if casting is needed False >>> A.coords = coords # set the index dtype of A >>> A.coords[0].dtype dtype('int32')