scipy.sparse.

safely_cast_index_arrays#

scipy.sparse.safely_cast_index_arrays(A, idx_dtype= 'numpy.int32'>, msg='')[источник]#

Безопасное приведение индексов разреженного массива к idx_dtype.

Проверить форму A для определения, безопасно ли преобразовать его индексные массивы в тип данных idx_dtype. Если любое измерение в shape больше, чем помещается в dtype, приведение типов небезопасно, поэтому вызывается исключение ValueError. Если безопасно, привести массивы индексов к idx_dtype и возвращает результат без изменения входных данных A. Вызывающий может присвоить результаты A атрибуты, если нужно, или использовать преобразованные индексные массивы напрямую.

Если понижающее приведение типов не требуется, возвращаются исходные индексные массивы. Вы можете проверить, например, A.indptr is new_indptr чтобы проверить, произошло ли понижение типа.

Добавлено в версии 1.15.0.

Параметры:
Aразреженный массив или матрица

Массив, для которого индексные массивы должны быть понижены.

idx_dtypedtype

Желаемый тип данных. Должен быть целочисленным типом данных (по умолчанию: np.int32). Большая часть scipy.sparse использует либо int64, либо int32.

msgstring, optional

Строка, добавляемая в конец сообщения ValueError, если форма массива слишком велика для размещения в idx_dtype. Сообщение об ошибке f" values too large for {msg}" Должно указывать, почему необходимо понижение типа, например, "SuperLU", по умолчанию используется f"dtype {idx_dtype}".

Возвращает:
idx_arraysndarray или кортеж ndarrays

На основе A.format, массивы индексов возвращаются после приведения к idx_dtype. Для CSC/CSR возвращает (indices, indptr). Для COO, возвращает coords. Для DIA возвращает offsets. Для BSR возвращает (indices, indptr).

Вызывает:
ValueError

Если массив имеет форму, которая не подходит для нового типа данных, или если разреженный формат не использует массивы индексов.

Примеры

>>> 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')