python稀疏矩陣

2021-09-22 12:25:36 字數 1078 閱讀 6438

1.為什麼使用稀疏矩陣

稀疏矩陣的兩個動機:稀疏矩陣通常具有很大的維度,有時甚大到整個矩陣(零元素)與可用記憶體不想適應;另乙個動機是避免零矩陣元素的運算具有更好的效能。

2.稀疏列矩陣csc(compressed sparse column),python中是使用csc_matrix按列對矩陣進行壓縮

csc使用了三個陣列,分別為數值、列偏移、行號。csc是一種編碼的方式

一維陣列data(數值):有序地儲存了所有的非零值,它具有與非零元素同樣多數量的元素,通常由變數nnz表示。

一維陣列indptr(列偏移量):包含了證書使得indptr[i]是data中元素的索引,它是列i中的第乙個非零元素。如果整個列i為零,則indptr[i]==indptr[i+1]

如初始矩陣有m列,則len(indptr)==m+1

一維陣列indices(行號:): 其使用如下方式包含行索引資訊:indices[indptr[i]:indptr[i+1]]是乙個具有列i中非零元素的行索引的整數陣列。len(indice)==len(data)==nnz

備註:行索引表示數值所在的行號,從0開始。

陣列data:包含矩陣中的非零元素,以行優先的形式儲存。

列偏移:csc中列索引被壓縮,沒有列索引,這裡用列偏移表示列索引。

>>> import numpy as np

>>> from scipy.sparse import csc_matrix

>>> a=np.arange(0,5)

>>> print(a)

[0 1 2 3 4]

>>> b=csc_matrix(a)

>>> print(b)

(0, 1) 1

(0, 2) 2

(0, 3) 3

(0, 4) 4

>>> print(b.indices)

[0 0 0 0]

>>> print(b.indptr)

[0 0 1 2 3 4]

>>> print(b.data)

[1 2 3 4]

python 生成隨機稀疏矩陣

import numpy as np import scipy.sparse as ss 生成隨機稀疏矩陣 num col 20num row 10num ele 40a np.random.randint 0,num row for in range num ele b np.random.ran...

稀疏矩陣相乘 Python版

given two sparse matricesaandb,return the result ofab.you may assume thata s column number is equal tob s row number.example a 1,0,0 1,0,3 b 7,0,0 0,0...

特殊矩陣 稀疏矩陣

對於乙個m n的矩陣,設s為矩陣的元素總個數s m n,設t為矩陣中非零元素的個數,滿足t 稀疏矩陣的零元素非常多,且分布無規律,所以稀疏矩陣的壓縮儲存方法為 只儲存矩陣中的非零元素,按照三元組的形式儲存。三元組由非零元素,該元素行下標和該元素列下標三個資料構成,放在乙個列數為3的陣列中。儲存結構又...