如何保存python生成的数据数组



我开发了一个生成多个数据数组的python代码。我想将这些阵列保存在计算机上的特定位置,然后将它们导入另一个笔记本。重要的是,给定一个保存为";data.csv";,我可以从中导入calun或行。例如data[0]data[0][1]

我已经尝试过以如下方式保存数据:

with open(path + '/data_Sevol.csv', 'w', newline='') as csvfile:
fieldnames = ['Sevol']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for i in range(len(Sevol)):
writer.writerow({'Sevol': Sevol[i]})

然而,尽管我可以定义一个接收矩阵的变量,但当调用行或列时,它会出错。

有人知道保存数据的更方便的方法吗?这样在导入数据时,我可以简单地用常用的方式调用行、列或元素(例如data[i][j](。

谢谢你的帮助。

如果您正在尝试存储dictionary,可以考虑使用json,这可以通过import json来完成您可以将字典转储到一个字符串中,并很快从文件中加载它们。您可以在这里了解如何使用json:https://www.w3schools.com/python/python_json.asp如果您使用csv,则open((csv的结果不能像列表一样直接使用,而是需要一个函数将其转换为嵌套列表,以便使用索引

import csv
def import_csv(path):
with open(path,"r") as raw_data:
result = []
data = csv.reader(raw_data,delimiter=",")
for row in data:
result.appendd(row)
return result

此函数采用csv文件的路径(我认为是分隔符(,并返回一个嵌套列表供您使用data[i][j]。但是请注意,头也包含在内,所以在迭代数据之前,请记住排除第一行

我阅读了您的评论并编写了这组函数,调用export_csv()将保存一个具有该数据类型的数组,如果使用import_csv(),它应该返回一个嵌套列表,同时保留该数据类型。目前它只适用于int、str、float和bool:

import csv
def get_type(inp):
t = str(type(inp))
return t.split("'")[1][0]
def fix_type(inp):
t = inp[0]
if t == "i":
return int(inp[1:])
elif t == "s":
return str(inp[1:])
elif t == "f":
return float(inp[1:])
elif t == "b":
return bool(inp[1:])
def transform(array):
result = []
for row in array:
tem = []
for item in row:
tem.append(get_type(item)+str(item))
result.append(tem)
return result
def deform(array):
result = []
for row in array:
tem = []
for item in row:
tem.append(fix_type(item))
result.append(tem)
return result
def import_csv(path):
with open(path,"r") as raw_data:
result = []
data = csv.reader(raw_data,delimiter=",")
for row in data:
result.append(row)
return deform(result)
def export_csv(path,data):
with open(path, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
for i in transform(data):
writer.writerow(i)

最新更新