Leyendo un archivo .dat binario como una matriz

Tengo un código que pasa por varias iteraciones. En cada iteración, el código genera una matriz basada en números. Agrego la matriz basada en números a un archivo .dat binario existente. Utilizo el siguiente código para generar los datos:

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

Estoy tratando de leer todo el archivo binario en una matriz. Estoy teniendo las siguientes dificultades:

  1. Probé el siguiente código:

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

    Estado de error:

    Seguimiento (última llamada más reciente): archivo “”, línea 1, en AttributeError: el objeto ‘numpy.ndarray’ no tiene atributo ‘fromstring’

  2. Intenté usar una matriz basada en matriz y luego leí el archivo en la matriz.

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

Sin embargo, NewData es erróneo, es decir, no es lo mismo que WholeData . Supongo que guardar los datos como numpy.array y leerlos como array.array podría no ser una buena opción.

Cualquier sugerencia será apreciada.

Creo que numpy.fromfile es lo que quieres aquí:

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

También tenga en cuenta que, según los documentos, esta no es la mejor manera de almacenar datos, ya que “se pierde información sobre la precisión y la endianidad”. En otras palabras, debe asegurarse de que el tipo de datos que se pasó a dtype sea compatible con lo que escribió originalmente en el archivo.

Para leer el archivo binario a la lista:

 list_int = [ord(i) for i in fd.read()]