You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含索引与值的TXT文件生成scipy稀疏矩阵或numpy数组

实现方案

直接基于现有TXT结构生成目标数据结构的实现非常简单,不需要调整现有文件格式,以下是两种常用场景的代码实现:

方案1:生成scipy稀疏矩阵(适合大矩阵,内存占用低)

scipy的coo_matrix原生支持「行索引、列索引、对应值」的三元组输入,完全匹配你的TXT文件结构,未指定位置默认值为0,刚好符合需求。

代码示例

import numpy as np
from scipy.sparse import coo_matrix

# 第一步:读取TXT文件的三元组数据,直接按列拆分
data = np.loadtxt("你的文件路径.txt")
row = data[:, 0].astype(int)  # x轴索引(行索引)转整数
col = data[:, 1].astype(int)  # y轴索引(列索引)转整数
val = data[:, 2]  # 矩阵对应位置数值

# 第二步:生成COO格式稀疏矩阵
# 如果你已知矩阵的行列数,可以手动指定shape参数,比如shape=(5,5)代表5行5列的矩阵
# 不指定shape的话会自动取行/列索引的最大值+1作为矩阵的对应维度
sparse_mat = coo_matrix((val, (row, col)))

# 如果需要转成其他稀疏格式(比如csr用于快速运算),直接调用对应方法即可
csr_mat = sparse_mat.tocsr()

方案2:生成numpy稠密数组

如果矩阵规模小,需要直接得到稠密numpy数组,可以在上述代码基础上直接调用toarray()方法:

# 接上面读取row、col、val的代码
dense_mat = coo_matrix((val, (row, col))).toarray()

# 也可以手动初始化全0数组后赋值,适合需要自定义矩阵大小的场景
# 比如你需要生成10行10列的矩阵:
# dense_mat = np.zeros((10, 10))
# dense_mat[row, col] = val

示例验证

用你给出的示例文件内容运行上述代码,得到的数组结果如下:

[[4.  5.2 2.1]
 [2.1 2.9 3.1]]

完全符合预期。

内容的提问来源于stack exchange,提问作者12213119

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:06:02