稀疏矩陣介紹
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()
- 圖例: