2016-05-03 25 views
0

私は繰り返し、次のような出力ファイルに41x55のnumpyの配列を付加するルーチンを持っている:多次元NumPy配列をstruct.packと同じディスクに書き込む方法は?

fmt = 'ihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh' 
for x in range(0, 41): 
    vmdata_file.write(struct.pack(fmt, *building_vms[x,:])) 

私はndarray.tofileメソッドの呼び出しでこれを置き換えるためにしようとしているが、取得することはできませんまったく同じ出力:

building_vms.tofile(vmdata_file) 

私の理解では、TOFILE方法がある限り、アレイ内の基礎となるデータの種類が同じであるように、そのstruct.pack方法と同一のバイナリデータの書き込みを行うことです。どのようにすれば、tofileメソッドがstruct.packメソッドと同じバイナリフォーマットを書き込むことができますか?

+0

サンプルデータを追加してください。 – pmaniyan

答えて

0

一つの方法は、まずあなたがディスク上にそれを持ってしたい正確にどのようにメモリ内のアレイを構築することです:

import numpy as np 

firstcol = building_vms[:,0].astype('i').view('h').reshape(len(building_vms), -1) 
tmp = np.hstack((firstcol , building_vms[:,1:].astype('h'))) 
tmp.tofile(vmdata_file) 

たぶん少しハック、代わりの.view('h').reshape(len(building_vms), -1)あなたも.view('2h')を使用することができます。

関連する問題