選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP How to W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SciPy 稀疏資料


什麼是稀疏資料

稀疏資料是大部分元素是未使用的(不攜帶任何資訊的元素)的資料。

它可以是一個像這樣的陣列

[1, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0]

稀疏資料: 是一個數據集中大部分項的值為零。

密集陣列: 是稀疏陣列的相反:大部分值不是零。

在科學計算中,當我們處理線性代數中的偏微分方程時,我們會遇到稀疏資料。


如何處理稀疏資料

SciPy 有一個模組,scipy.sparse,它提供了處理稀疏資料的功能。

我們主要使用兩種型別的稀疏矩陣

CSC - Compressed Sparse Column(壓縮稀疏列)。用於高效的算術運算,快速的列切片。

CSR - Compressed Sparse Row(壓縮稀疏行)。用於快速的行切片,更快的矩陣向量乘法。

在本教程中,我們將使用CSR矩陣。


CSR 矩陣

我們可以透過將一個數組傳遞給函式 scipy.sparse.csr_matrix() 來建立一個 CSR 矩陣。

示例

從陣列建立 CSR 矩陣

import numpy as np
from scipy.sparse import csr_matrix

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

print(csr_matrix(arr))
自己動手試一試 »

上面的例子返回

  (0, 5)	1
  (0, 6)	1
  (0, 8)	2

從結果中我們可以看到有 3 個有值的元素。

第 1 個元素在行 0 的位置 5,值為 1

第 2 個元素在行 0 的位置 6,值為 1

第 3 個元素在行 0 的位置 8,值為 2



稀疏矩陣方法

使用 data 屬性檢視儲存的資料(不包括零元素)

示例

import numpy as np
from scipy.sparse import csr_matrix

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

print(csr_matrix(arr).data)
自己動手試一試 »

使用 count_nonzero() 方法計算非零元素的數量

示例

import numpy as np
from scipy.sparse import csr_matrix

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

print(csr_matrix(arr).count_nonzero())
自己動手試一試 »

使用 eliminate_zeros() 方法從矩陣中移除零項

示例

import numpy as np
from scipy.sparse import csr_matrix

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

mat = csr_matrix(arr)
mat.eliminate_zeros()

print(mat)
自己動手試一試 »

使用 sum_duplicates() 方法消除重複項

示例

透過將它們相加來消除重複項

import numpy as np
from scipy.sparse import csr_matrix

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

mat = csr_matrix(arr)
mat.sum_duplicates()

print(mat)
自己動手試一試 »

使用 tocsc() 方法從 csr 轉換為 csc

示例

import numpy as np
from scipy.sparse import csr_matrix

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

newarr = csr_matrix(arr).tocsc()

print(newarr)
自己動手試一試 »

注意: 除了上述提到的稀疏特定操作外,稀疏矩陣還支援所有常規矩陣的操作,例如重塑、求和、算術運算、廣播等。



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援