2012-08-03 8 views
6

私はいくつかの繰り返しを行うコードを持っています。各反復で、コードはnumpyベースの配列を生成します。私はnumpyベースの配列を既存のバイナリ.datファイルに追加します。私は次のコードを使用してデータを生成します:バイナリ.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() 
    

    エラーステータス:

    Traceback (most recent call last): File "", line 1, in AttributeError: 'numpy.ndarray' object has no attribute 'fromstring'

  2. 私は、アレイベースのアレイを使用しようとしましたし、次に読みをファイルを配列に挿入します。

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

しかし、NewDataは、WholeDataと同じではない、すなわち、誤りです。私はnumpy.arrayとしてデータを保存し、array.arrayとしてそれを読むことは良い選択肢ではないと思います。

ご意見をお寄せください。

答えて

16

私はnumpy.fromfileはあなたがここに欲しいものであることを考える:

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

はまた、「精度とエンディアンの情報が失われている」としてドキュメントによると、これはデータを格納するための最良の方法ではないことに注意してください。つまり、dtypeに渡されるデータ型が、最初にファイルに書き込んだデータ型と互換性があることを確認する必要があります。

+0

これは正常に動作します!データを保存するためのより良い方法を検討します。ありがとう、mgilson。 – Nazmul

+0

これは、floatとしてデータを読み取るために正常に動作します。しかし、私がデータテーブルを読みたい場合はどうしたらいいですか?元のデータフレームの次元を維持したいと思います。 – hmi

0

ファイルからリストにバイナリを読むために:

list_int = [ord(i) for i in fd.read()] 
関連する問題