菜单
×
   ❮   
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 提供支持