scipy.sparse.csr_matrix
scipy.sparse.csr_matrix(arg1, shape=None, dtype=None, copy=False)
压缩行稀疏矩阵。
可以通过这几种方式实例化:
csr_matrix(D) | 带有密集矩阵2级ndarrayD |
---|---|
csr_matrix(S) | 与另一个稀疏矩阵S(等效于S.tocsr()) |
csr_matrix((M, N), [dtype]) | 构造形状为(M,N)的空矩阵dtype是可选的,默认为dtype =‘d’。 |
csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)]) | 其中data,row_ind和col_ind满足关系a [row_ind [k],col_ind [k]] = data [k]。 |
csr_matrix((data, indices, indptr), [shape=(M, N)]) | 是标准的CSR表示形式,其中行i的列索引存储在indices [indptr [i]:indptr [i + 1]]中,其对应值存储在data [indptr [i]:indptr [i + 1]]中 。 如果未提供shape参数,则从索引数组中推断出矩阵尺寸。 |
优点:
- 高效的算术运算,CSR + CSR,CSR * CSR等
- 高效地按行切片
- 快速地计算矩阵与向量的内积
缺点:
- 按列切片很慢(考虑CSC_matrix)
- 更改稀疏结构的成本很高(考虑LIL或DOK)
官网例子
>>> import numpy as np
>>> from scipy.sparse import csr_matrix
>>> csr_matrix((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]], dtype=int8)
>>> row = np.array([0, 0, 1, 2, 2, 2])
>>> col = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray()
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]])
>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]])
具有的属性
属性 | 说明 |
---|---|
dtype | 矩阵的数据类型 |
shape | 矩阵的形状 |
ndim | 维数(常为2) |
nnz | 存储值的数量,包括显式零。 |
data | 矩阵的CSR格式数据数组 |
indices | 矩阵的CSR格式索引数组 |
indptr | CSR格式索引矩阵的指针数组 |
has_sorted_indices | 确定矩阵是否已对索引进行排序 |