稀疏矩阵介绍
1 介绍
(稠密)矩阵是:
- 数学对象
- 存储二维数组的数据结构
重要特质:
- 所有元素内存一次性分配,在Numpy ndarray中通常是一个连续的块
- 快速访问单个元素
1.1 为什么使用稀疏矩阵?
- 内存增长速度为n^2
- 例子(双精度矩阵):
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 1e6, 10)
>>> plt.plot(x, 8.0 * (x**2) / 1e6, lw=5)
[<matplotlib.lines.Line2D object at ...>]
>>> plt.xlabel(’size n’)
<matplotlib.text.Text object at ...>
>>> plt.ylabel(’memory [MB]’)
<matplotlib.text.Text object at ...>
1.2 稀疏矩阵VS稀疏矩阵存储方案
- 稀疏矩阵是一个大部分元素为空的矩阵
- 存储所有的零元素是非常浪费的->仅存储非零元
- 考虑压缩
- 优势:节约大量内存
- 弊端:依赖于实际的存储方案,有时候不可行
1.3 典型应用
- 求解偏微分方程(PDEs):有限元方法、工程机械,电工,物理等
- 图理论
- 等等
1.4 先决条件
最新版本的:
- numpy
- scipy
- matplotlib(可选)
- ipython(功能强大)
1.5 稀疏结构可视化
- matplotlib中的spy()
- 图例: