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

如何使用Pandas正确保存与读取不同尺寸的数值矩阵

解决不同尺寸矩阵CSV保存/读取后无法还原为数值矩阵的问题

CSV本质是纯文本表格格式,无法原生存储多维数组结构,直接用pd.to_csv保存时,Pandas会自动把numpy ndarray转成字符串存储,读取后自然无法直接还原为数值矩阵。以下是两种可行的解决方法:

方案1:使用Pickle直接序列化(最简便)

Pickle可以直接序列化Python对象(包括numpy ndarray),完美保留原数据结构,无需额外处理:

import numpy as np
import pandas as pd

# 生成数据
L = []
for Dim in range(3,10):
    L.append(np.random.randint(1,10, (Dim,Dim)))
    
df = pd.DataFrame(L)

# 保存为pickle文件
df.to_pickle('matrices.pkl')

# 读取文件,直接恢复原ndarray结构
df_read = pd.read_pickle('matrices.pkl')
# 验证:df_read.iloc[0][0] 为numpy.ndarray类型

方案2:强制用CSV存储(需手动序列化/反序列化)

如果必须使用CSV格式,可以把每个矩阵转成JSON字符串存储,读取时再解析回ndarray:

import numpy as np
import pandas as pd
import json

# 生成数据
L = []
for Dim in range(3,10):
    L.append(np.random.randint(1,10, (Dim,Dim)))
    
df = pd.DataFrame(L)

# 将矩阵转为可解析的JSON字符串
df_json = df.applymap(lambda mat: json.dumps(mat.tolist()))
# 保存为CSV
df_json.to_csv('matrices.csv', index=False)

# 读取CSV并解析回ndarray
df_read = pd.read_csv('matrices.csv')
df_read = df_read.applymap(lambda s: np.array(json.loads(s)))
# 验证:df_read.iloc[0][0] 为numpy.ndarray类型

补充说明

直接用pd.to_csv无法解决这个问题,不是参数设置的问题——CSV格式本身只能存储扁平的文本/数值,不支持多维数组的结构存储,必须通过序列化转换为文本格式才能保存,读取时再反向解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:05:25