在矩陣中,若數值為0的元素數目遠遠多於非0元素的數目,並且非0元素分布沒有規律時,則稱該矩陣為稀疏矩陣;
與之相反,若非0元素數目佔大多數時,則稱該矩陣為稠密矩陣;
通常認為矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣為稀疏矩陣。該比值稱為這個矩陣的稠密度
/**
* 列印矩陣、壓縮矩陣、還原矩陣
* 壓縮以及還原矩陣之前會判斷該矩陣是否符合規定
*/public
class
arrayutil
for(
int[
] array : matrix)
system.out.
println()
;}}/**
* 判斷矩陣中0的數量
* * @param matrix 矩陣
* @return 0的數量
*/private
static
intzeronum
(int
matrix)}}
return zero_num;
}/**
* 是否是稀疏矩陣
* * @param matrix 稀疏矩陣
* @return 是否是稀疏矩陣
*/private
static
boolean
issparsearray
(int
matrix)
row_num = matrix.length;
column_num = matrix[0]
.length;
zero_num =
zeronum
(matrix)
;return zero_num /
(column_num * row_num)
<=
0.05;}
/** * 壓縮稀疏矩陣
* * @return 壓縮後的矩陣
*/public
static
int[
]compressionmatrix
(int
matrix)
int notzeronum =
(column_num * row_num)
- zero_num;
int sparsematrix[
]=newint
[notzeronum +1]
[3];
// 給稀疏陣列賦值
sparsematrix[0]
[0]= row_num;
sparsematrix[0]
[1]= column_num;
sparsematrix[0]
[2]= notzeronum;
int count =0;
// count 用於記錄是第幾個非0資料
for(
int i =
0; i <
11; i++)}
}return sparsematrix;
}/**
* 檢查矩陣是否是壓縮後的矩陣
* * @param matrix 矩陣
* @return 檢查矩陣是否是壓縮後的矩陣
*/private
static
boolean
checkcompressionmatrix
(int
matrix)
int rowtotle = matrix[0]
[0];
int columntotle = matrix[0]
[1];
for(
int row =
1;row < matrix.length;row++)}
return
false;}
/** * 還原壓縮的稀疏矩陣
* * @return 還原後的矩陣
*/public
static
int[
]reductionmatrix
(int
matrix)
int[
] sparsematrix =
newint
[matrix[0]
[0]]
[matrix[0]
[1]]
;for
(int row =
1; row < matrix.length; row++
)return sparsematrix;
}}
測試
public
class
sparsearray
}
機器學習 稀疏矩陣的處理
一 稀疏矩陣的定義 對於那些零元素數目遠遠多於非零元素數目,並且非零元素的分布沒有規律的矩陣稱為稀疏矩陣 sparse 人們無法給出稀疏矩陣的確切定義,一般都只是憑個人的直覺來理解這個概念,即矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素沒有分布規律。二 稀疏矩陣的壓縮儲存 由於稀疏矩陣中...
python雜湊與稀疏矩陣的處理
一雜湊的原理 字典 key 對映到 value 雜湊 key 對映到 key的雜湊值 對映到 value 例如查詢 現代漢語字典 拼音 an 對映到頁碼55 對映到 安 二 自定義雜湊函式 在nlp問題中,假設你想把乙個字串轉換為乙個數值型向量,可以使用one hot encoding也就是雜湊函式...
稀疏矩陣的壓縮矩陣
如果乙個矩陣中的大部分元素為零,稱為稀疏矩陣。對於稀疏矩陣而言,時間儲存的資料項很少,如果在程式中使用傳統的二維陣列方式來儲存,則十分浪費儲存空間,且矩陣越大,資源浪費越嚴重。為提記憶體空間利用率,可利用三項式 3 tuple 的資料結構,即把乙個非零項用 i,j,item value 來表示。其中...