SciPy 教程

浏览7040
更新时间2025-08-14

什么是稀疏数据

稀疏数据是指大部分未使用元素(不携带任何信息的元素)的数据。

它可以是像这样的数组:

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

稀疏数据(Sparse Data):是大多数项目值为零的数据集。

密集数组(Dense Array):与稀疏数组相反:大多数值不为零。

在科学计算中,当我们处理线性代数中的偏导数时,会遇到稀疏数据。

如何处理稀疏数据

SciPy 有一个 scipy.sparse 模块,它提供了处理稀疏数据的函数。

我们主要使用两种类型的稀疏矩阵:

CSC - 压缩稀疏列。用于高效算术,快速列切片。

CSR - 压缩稀疏行。用于快速行切片、更快的矩阵向量乘积。

在本教程中,我们将使用 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 个有值的项。

项在行 0 位置 5,值为 1。 项在行 0 位置 6,值为 1。 项在行 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)

注意:除了提到的稀疏特定操作外,稀疏矩阵还支持正常矩阵支持的所有操作,例如重塑、求和、算术、广播等。

相关视频

更多

免费

phpStudy极速入门视频教程
初级phpStudy极速入门视频教程

54.6万次学习

收藏

免费

phpStudy V8 视频教程
初级phpStudy V8 视频教程

38.8万次学习

收藏

免费

小皮面板使用视频教程
初级小皮面板使用视频教程

21.6万次学习

收藏

免费

好课诞生记
初级好课诞生记

7.1万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

65万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76.8万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.2万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.4万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.3万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

133.5万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载