矩陣壓縮儲存(可用於FM演算法中的稀疏矩陣儲存)

2022-08-27 16:48:09 字數 843 閱讀 2234

indptr = np.array([0, 2, 3, 6])   #6代表非零元素總個數為6

indices = np.array([0, 2, 2, 0, 1, 2])

data = np.array([1, 2, 3, 4, 5, 6])

csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()

array([[1, 0, 2],

[0, 0, 3],

[4, 5, 6]])

#按row行來壓縮

#對於第i行,非0資料列是indices[indptr[i]:indptr[i+1]] 資料是data[indptr[i]:indptr[i+1]]

#在本例中

#第0行,有非0的資料列是indices[indptr[0]:indptr[1]] = indices[0:2] = [0,2]

#資料是data[indptr[0]:indptr[1]] = data[0:2] = [1,2],所以在第0行第0列是1,第2列是2

#第1行,有非0的資料列是indices[indptr[1]:indptr[2]] = indices[2:3] = [2]

#資料是data[indptr[1]:indptr[2] = data[2:3] = [3],所以在第1行第2列是3

#第2行,有非0的資料列是indices[indptr[2]:indptr[3]] = indices[3:6] = [0,1,2]

#資料是data[indptr[2]:indptr[3]] = data[3:6] = [4,5,6],所以在第2行第0列是4,第1列是5,第2列是6

矩陣的壓縮儲存

在編寫程式時往往都是二維陣列表示矩陣,然而在數值分析中經常出現一些階數很高的的矩陣同時在距震中有很多值相同的元素,或者是零元素,為了節省空間,可以對這類矩陣進行壓縮儲存,所謂的壓縮儲存就是,多個值相同的元之分配乙個儲存空間,對零元不分配空間。若值相同的元素或零元素在矩陣中分布有一定規律,則稱矩陣為特...

矩陣的壓縮儲存

一 壓縮儲存 指為多個值相同的元只分配乙個儲存空間,對零元不分配空間。二 矩陣分類 1 假如值相同的元素或者零元素在矩陣中的分配有一定的規律,則我們稱此類矩陣為特殊矩陣 反之,稱為稀疏矩陣。2 n階對稱矩陣 滿足aij aji 1 i,j n 3 稀疏矩陣 非零元較零元少,且分布沒有規律。三 n階對...

矩陣的壓縮儲存

我的離散老師一直建議我們用矩陣來儲存資訊,尤其是兩個事物的關係資訊 比如兩個元素相關聯,比如圖 但如果要儲存的關係是雙向的,也就是無向圖,那麼用矩陣就會造成部分浪費,比如從a到b有路徑,那麼只需要在陣列 a b 位置置1即可,b a 再置1就顯得浪費了 這種關係矩陣往往是對稱矩陣所以需要 給相同元素...