天天看點

Scipy中的稀疏矩陣--介紹稀疏矩陣介紹

稀疏矩陣介紹

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