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

如何保存包含非均匀部分的多维列表至文件?

问题:异构数据列表保存失败

数据结构

我用Python构建了一个包含50个变量的列表,结构如下:

[0][0] = 变量0的年度数值(20个数字组成的数组)
[0][1] = 变量0的年度误差值(20个数字组成的数组)
[0][2] = 变量0的名称(字符串)
[11][1] = 变量11的年度误差值
...

列表构建方式

这个列表是从CSV格式的DataFrame转换而来,原数据里变量值和误差值是相邻列排列的,构建代码大概是这样:

a = []    
b = []  
b.append(Data[Data.columns[1]]) # 取单个变量的数值列
b.append(Data[Data.columns[2]]) # 取对应变量的误差列(原数据紧跟在数值列后面)
b.append("Data of y by person x") 
a.append(b)   
b = [] # 清空临时列表,处理下一个变量
b.append(Data[Data.columns[3]]) 
# ... 重复上述步骤处理所有变量
a.append(b)   
b = []  

这个列表用起来很方便,能通过变量编号快速调取数据,不管是绘图还是分析都顺手。

保存失败的尝试与错误

我试了三种保存方法,全失败了:

  • np.savetxt("myfile.csv", a)
  • np.savetxt("myfile.txt", a)
  • a.tofile('myfile.csv', sep = ',')

每次都会弹出这个错误:

ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (67, 3) + inhomogeneous part

需求

我想把这个列表直接保存成文件,之后打开就能用,不用重新跑一遍构建代码。


解决方案

你的列表属于异构数据结构(既有数组又有字符串,而且子元素的长度不一致),numpy的保存工具只支持同构的数值数组,所以会报错。直接用Python的序列化工具就能解决:

方法1:用pickle(Python自带,无需额外安装)

import pickle

# 保存列表
with open('my_data.pkl', 'wb') as f:
    pickle.dump(a, f)

# 加载列表
with open('my_data.pkl', 'rb') as f:
    loaded_a = pickle.load(f)

方法2:用joblib(适合大数据,速度更快)

先安装joblib:pip install joblib,然后执行:

import joblib

# 保存列表
joblib.dump(a, 'my_data.joblib')

# 加载列表
loaded_a = joblib.load('my_data.joblib')

这两种方法都能完整保留列表的所有结构,加载后的列表和原列表完全一样,直接就能用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:07:45