8

我有一个经过多次迭代的代码。在每次迭代中,代码都会生成一个基于 numpy 的数组。我将基于 numpy 的数组附加到现有的二进制 .dat 文件中。我使用以下代码生成数据:

WholeData = numpy.concatenate((Location,Data),axis=0)  
# Location & Data are two numpy arrays
DataBinary = open('DataBinary.dat','ab')
WholeData.tofile(DataBinary)
DataBinary.close()

我正在尝试将整个二进制文件读入一个数组。我有以下困难:

  1. 我尝试了以下代码:

    NewData = numpy.array('f')
    File1 = open('DataBinary.dat','rb')
    NewData.fromstring(File1.read())
    File1.close()
    

    错误状态:

    回溯(最后一次调用):文件“”,第 1 行,在 AttributeError 中:'numpy.ndarray' 对象没有属性'fromstring'

  2. 我尝试使用基于数组的数组,然后将文件读入数组。

    from array import array
    File1 = open('DataBinary.dat','rb')
    NewData.fromstring(File1.read())
    File1.close()
    

但是,NewData是错误的,即,它与 不同WholeData。我想将数据保存为numpy.array并读取它array.array可能不是一个好的选择。

任何建议将不胜感激。

4

2 回答 2

27

我认为这numpy.fromfile就是你想要的:

import numpy as np
myarray = np.fromfile('BinaryData.dat', dtype=float)

另请注意,根据文档,这不是存储数据的最佳方式,因为“丢失了有关精度和字节顺序的信息”。换句话说,您需要确保传递给 dtype 的数据类型与您最初写入文件的内容兼容。

于 2012-08-03T15:37:59.183 回答
-1

要将二进制文件从文件读取到列表:

list_int = [ord(i) for i in fd.read()]
于 2014-10-17T16:59:51.197 回答