如何保存Python生成的数据数组并支持行列索引调用?
解决数组保存与索引调用的问题
问题根源
你之前用csv.DictWriter的方式会把数组存成单列的键值对结构,导入后无法直接作为二维数组通过data[i][j]索引。下面提供几种更直接的方案,满足你保存后能常规调用行、列元素的需求:
方案1:用Numpy(最适合数值型数组)
Numpy本身就是为数组操作设计的,保存和导入后直接是数组类型,原生支持data[i][j]索引。
保存代码
import numpy as np # 假设Sevol是你的多维数组(比如二维数组) Sevol = np.array([[1,2,3], [4,5,6], [7,8,9]]) # 保存为高效的.npy格式 np.save(path + '/data_Sevol.npy', Sevol) # 如果一定要存成csv格式: np.savetxt(path + '/data_Sevol.csv', Sevol, delimiter=',')
导入代码
import numpy as np # 导入.npy文件 data = np.load(path + '/data_Sevol.npy') # 导入csv文件 # data = np.loadtxt(path + '/data_Sevol.csv', delimiter=',') # 直接索引调用 print(data[0]) # 获取第一行 print(data[0][1]) # 获取第一行第二列元素
方案2:用Pandas(适合带表头或混合类型数据)
如果需要保留表头或处理混合类型数据,用Pandas保存后可转成二维列表实现data[i][j]调用。
保存代码
import pandas as pd # 假设Sevol是二维列表/数组 df = pd.DataFrame(Sevol) # 不保存索引和表头(如需表头可去掉header=False) df.to_csv(path + '/data_Sevol.csv', index=False, header=False)
导入代码
import pandas as pd # 读取csv(header=None表示无表头) df = pd.read_csv(path + '/data_Sevol.csv', header=None) # 转成二维列表 data = df.values.tolist() # 索引调用 print(data[0]) # 获取第一行 print(data[0][1]) # 获取第一行第二列元素
方案3:用Pickle(通用序列化,适合任意Python对象)
如果你的数组是普通Python列表,Pickle可以直接序列化整个对象,导入后和原对象完全一致。
保存代码
import pickle # 假设Sevol是二维列表 with open(path + '/data_Sevol.pkl', 'wb') as f: pickle.dump(Sevol, f)
导入代码
import pickle with open(path + '/data_Sevol.pkl', 'rb') as f: data = pickle.load(f) # 直接索引调用 print(data[0][1])
内容的提问来源于stack exchange,提问作者User8563
相关产品推荐
相关产品推荐

