稀疏矩阵允许数据结构存储大型稀疏矩阵,并提供执行复杂矩阵计算的功能。简单来说,假设你有一个包含数百个元素的二维矩阵,但其中只有少数几个包含非零值。如果使用排序方法对这个矩阵进行排序,我们将浪费大量空间来存储零。

稀疏数据结构允许我们仅存储非零值,假设其余的都是零。

SciPy中的稀疏矩阵类型

表示稀疏矩阵有多种方式;SciPy提供了其中的七种。

  • 块稀疏行矩阵(BSR)
  • 坐标列表矩阵(COO)
  • 压缩稀疏列矩阵(CSC)
  • 压缩稀疏行矩阵(CSR)
  • 对角线存储的稀疏矩阵(DIA)
  • 基于键的字典稀疏矩阵(DOK)
  • 基于行的链表稀疏矩阵(LIL)

考虑以下示例:

import numpy as np  
from scipy.sparse import random  
np.random.seed(10)  
# Generate a random binary sparse matrix  
matrix = random(5, 5, format='csr', density=0.25)  
# Substitute all non zero values with index number  
matrix.data[:] = np.arange(1, matrix.data.shape[0]+1)  
# We can access and modify these arrays:  
print(matrix.toarray())  
print("The data is",matrix.data)  
print("Cell which consits the non-zero values",matrix.indptr)  

输出:

[[0. 1. 0. 0. 0.]
 [2. 0. 0. 0. 0.]
 [3. 0. 4. 0. 0.]
 [0. 0. 5. 0. 0.]
 [0. 0. 0. 6. 0.]]
The data is [1. 2. 3. 4. 5. 6.]
Cell which consits the non-zero values [0 1 2 4 5 6]

标签: Scipy, Scipy学习, Scipy教程, Scipy下载, Scipy指南, Scipy基础教程, Scipy使用指南, Scipy库, Scipy入门, Scipy进阶, Scipy模块, Scipy安装教程