在没有numpy头的二进制文件中追加numpy矩阵

2024-04-25 21:48:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我不断地以numpy矩阵的形式接收新数据,需要将其附加到现有文件中。该文件的结构和数据类型是固定的,所以我需要python为我进行转换。在

对于单个矩阵,该方法适用于:

myArr = np.reshape(np.arange(15), (3,5))
myArr.tofile('bin_file.dat')

但是假设我想继续用越来越多的数组来附加现有文件,那么numpy.tofile将覆盖它在文件中找到的任何内容,而不是追加。在

我发现我还可以继续这样做:

^{pr2}$

它成功地附加到二进制文件。但另一方面,numpy.save不存储原始二进制数据,但还保存了一个头(我假设),这使得文件无法被外国软件读取(我需要使用float32)的原始二进制文件。在

numpy.fromfile读取文件的现有内容,追加我的数据并再次保存它不是一个选项,因为文件变得非常大,所有的I/O都要花很长时间才能处理。在

有没有类似于append模式的numpy.tofile?有没有其他的可能性我目前正在错过?在


Tags: 文件数据方法numpy内容np二进制矩阵
1条回答
网友
1楼 · 发布于 2024-04-25 21:48:32

可以附加到tofile文件:

In [344]: with open('test1',mode='ba+') as f:
     ...:     np.arange(3).tofile(f)
     ...:     np.arange(5).tofile(f)
     ...:     
In [345]: np.fromfile('test1',dtype=int)
Out[345]: array([0, 1, 2, 0, 1, 2, 3, 4])

这将保存数组数据,而不保存形状或数据类型信息。因此加载必须指定dtype。任何重塑都取决于你。在

相关问题 更多 >