Python稀疏矩阵创建与参数保存完整指南

追风的人
追风的人
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍Python中稀疏矩阵的创建与参数保存方法。通过scipy.sparse.coo_matrix构建稀疏矩阵,利用todense转换为密集矩阵,并演示如何使用numpy.save和np.savez保存单个或多个数组及稀疏矩阵。最后讲解如何加载.npz文件并提取参数名称与值,适用于模型训练中的参数持久化场景。

稀疏矩阵的创建与转换

在Python中处理稀疏矩阵时,首先可以使用scipy库中的coo_matrix函数来建立稀疏矩阵。该函数通过指定非零元素的值、行索引和列索引来构建矩阵,并设定矩阵的总形状。例如,创建一个10x10的稀疏矩阵,其中非零元素及其位置由给定的数组定义。


from scipy.sparse import coo_matrix
# 建立稀疏矩阵
data = [1,2,3,4]
row = [3,6,8,2]
col = [0,7,4,9]
c = coo_matrix((data,(row,col)),shape=(10,10)) #构建10*10的稀疏矩阵,其中不为0的值和位置在第一个参数
print(c)

将稀疏矩阵转换为密集矩阵(即普通二维数组)可以使用todense()方法。该方法会将稀疏矩阵中的所有元素还原为完整的矩阵形式,包括大量的零值,便于后续进行需要密集矩阵支持的操作。


d = c.todense()
print(d)

如果一个普通矩阵中包含大量零值,可以直接将其转换为稀疏矩阵以节省内存空间。使用coo_matrix接收密集矩阵作为输入,系统会自动识别非零元素并构建对应的稀疏表示形式。


e = coo_matrix(d) #将一个0值很多的矩阵转为稀疏矩阵
print(e)

模型参数的保存与加载

在模型训练或数据处理中,保存参数数据至关重要。除了常见的CSV、JSON和Excel格式外,Python支持使用类似MATLAB的.mat格式进行保存。虽然这里主要介绍numpy的保存方式,但matlab格式因其兼容性强大,能够直接保存多种数据类型,也是值得考虑的选择。


import numpy as np

# numpy.save(arg_1,arg_2),arg_1是文件名,arg_2是要保存的数组

aa = np.array(d)
print(aa)
# save
np.save('test_save_1.npy', aa) #保存一个数组
np.savez('test_save_2', aa=aa, d=d) #保存多个数组,其中稀疏矩阵可以直接保存

加载之前保存的参数数据时,可以使用相应的加载函数。对于numpy保存的文件,通过load方法读取文件内容,恢复为对应的数组或字典对象,以便在后续程序中继续使用这些参数。


#load
a_ = np.load('test_save_1.npy')
print(a_)

dt = np.load('test_save_2.npz') #npz数据加载后是一个字典格式数据
print(dt)
print(dt['aa'])
print(dt['d']) #获取其中的参数值,类似于字典形式获取

当加载包含多个数组的.npz文件时,返回的数据结构类似于字典。可以通过获取该对象的键来查看所有保存的参数名称,从而了解文件中包含哪些数据字段。


#获取参数名称
p_name =list(dt.keys())
print(p_name)

#获取值
p_value =list(dt.values())
print(p_value)

本文介绍了稀疏矩阵的创建、转换以及参数保存与加载的基本流程。希望这些内容能帮助读者更好地处理Python中的稀疏数据及模型参数,欢迎继续支持本站获取更多技术分享。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。