稀疏数据

收藏899

阅读2430

更新时间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)

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

相关

视频

RELATED VIDEOS

更多

免费

phpStudy极速入门视频教程

免费

Midjourney基础课程
初级 Midjourney基础课程

11149次学习

收藏

免费

极客学院Git使用视频教程

免费

尚观shell视频教程
高级 尚观shell视频教程

15709次学习

收藏

免费

尚观Linux入门视频教程
初级 尚观Linux入门视频教程

42887次学习

收藏

免费

尚观Linux初级视频教程
初级 尚观Linux初级视频教程

40264次学习

收藏

免费

尚观Linux中级视频教程
中级 尚观Linux中级视频教程

48298次学习

收藏

免费

尚观Linux高级视频教程
高级 尚观Linux高级视频教程

41982次学习

收藏

科技资讯

更多

精选课程

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

共29课时

61.7万人学习

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

共25课时

39.3万人学习

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

共43课时

70.9万人学习

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

共25课时

61.6万人学习

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

共22课时

23万人学习

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

共28课时

33.9万人学习

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

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号