如何保存numpy数组,以便以后可以适当加载它们?

时间:2017-03-15 17:59:51

标签: python arrays numpy save

我有一个代码,在每次迭代时输出一个N长度的Numpy数组。

EG。 - theta = [0,1,2,3,4]

我希望能够将数组动态保存到文本文件或.csv文件,这样我以后可以加载数据文件并适当地提取哪个数组对应于哪个迭代。基本上,它应该以有序的方式保存。

我假设数据文件看起来像这样: -

0 1 2 3 4

1 2 3 4 5

2 3 4 5 6 ...(随机输出)

我想过使用np.c_但我不想在每次迭代时覆盖该文件,如果我只是将终端输出保存为> output.txt,它保存为包括括号的数组。我不知道如何阅读这样的文本文件。

是否有正确的方法来执行此操作,即写入和读取数据?

3 个答案:

答案 0 :(得分:2)

我使用pandas和openpyxl来存储我用Python计算的数据。

这里有一个例子,我生成一个numpy数组,我将它转换为pandas数据帧,然后我将它保存到位于“path”的excel文件中(请记住,如果你在Windows上工作,你需要“r”at文件路径的开头,以便将符号“\”转换为符号“\\”)

import numpy as np
import pandas as pd
from openpyxl import load_workbook

path = r"C:\Users\fedel\Desktop\excelData\fileName.xlsx"

data = np.random.randn(100)
data = pd.DataFrame(data)
n = 0
data.to_excel(path, sheet_name = 'sheet number ' + str(n)) # save data in an excel worksheet

现在您可以打开“fileName.xlsx”文件,看到您将数据存储在名为“工作表编号0”的工作表中。

下一步是生成其他数据并将其保存在其他工作表中,而不删除第一个

book = load_workbook(path) #load excel file 
writer = pd.ExcelWriter(path, engine = 'openpyxl') # use pandas to write in the some excel file
writer.book = book # write what you saved before in order to avoid "overwriting"

for n in range(1, 10):
    data = np.random.randn(100)
    data = pd.DataFrame(data)
    data.to_excel(writer, sheet_name = 'sheet number ' + str(n) ) # iteratively save data on different excel worksheets

writer.save()
writer.close()

如果您想打开并分析存储的数据,我建议您输入

xls = pd.ExcelFile(path)
df1 = xls.parse(0)

如果要打开第一个工作表中的数据或

xls = pd.ExcelFile(path)
df1 = xls.parse(1)

如果你想打开第二个数据,你甚至可以写

xls = pd.ExcelFile(path)
dataNames = xls.sheet_names
df1 = xls.parse(dataNames[0])

答案 1 :(得分:1)

您是否在寻找np.savetxt之类的内容?

如果要将数据附加到现有文件,可以使用追加模式打开文件。

with open('data.txt', 'a') as f:
    np.savetxt(f, newdata)

查看此帖子Appending a matrix to an existing file using numpy

您可以使用np.loadtxt

阅读文本文件

答案 2 :(得分:0)

ndarray' .tofile()方法怎么样?阅读使用numpy.fromfile()