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



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

例如 -- theta = [ 0, 1, 2, 3, 4 ]

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

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

0 1 2 3 4

1 2 3 4 5

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

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

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

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

这里有一个示例,我

生成一个 numpy 数组,我将其转换为 pandas 数据帧,然后将其保存到位于"path"中的 excel 文件中(请记住,如果您正在处理 Windows,则需要在文件路径的开头添加"r"才能将符号"\"转换为符号"\\"(

import numpy as np
import pandas as pd
from openpyxl import load_workbook
path = r"C:UsersfedelDesktopexcelDatafileName.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

现在,您可以打开"文件名.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])

你在寻找类似np.savetxt的东西吗?

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

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

看看这篇文章 使用 numpy 将矩阵附加到现有文件

您可以使用np.loadtxt读取文本文件

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

最新更新