scipy.sparse.
safely_cast_index_arrays#
- scipy.sparse.safely_cast_index_arrays(A, idx_dtype=<class 'numpy.int32'>, msg='')[源代码]#
安全地将稀疏数组索引转换为 idx_dtype。
检查 A 的形状,以确定将其索引数组转换为 dtype idx_dtype 是否安全。如果形状中的任何维度大于 dtype 所能容纳的大小,则强制转换是不安全的,因此会引发
ValueError
。如果安全,则将索引数组强制转换为 idx_dtype 并返回结果,而不更改输入 A。如果需要,调用者可以将结果分配给 A 的属性,或直接使用强制转换的索引数组。除非需要降级转换,否则将返回原始索引数组。您可以测试例如
A.indptr is new_indptr
,以查看是否发生了降级转换。在 1.15.0 版本中添加。
- 参数:
- A稀疏数组或矩阵
应降级转换索引数组的数组。
- idx_dtypedtype
所需的 dtype。应为整数 dtype (默认值:
np.int32
)。大多数 scipy.sparse 使用 int64 或 int32。- msg字符串,可选
如果数组形状太大而无法容纳在 idx_dtype 中,则添加到 ValueError 消息末尾的字符串。错误消息是
f"<index> 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
如果数组的形状无法容纳在新 dtype 中,或者如果稀疏格式不使用索引数组。
示例
>>> 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')