2017-02-10 39 views
1

我想將兩個不同數據類型uint8和int32的兩個numpy數組轉儲到文件中。我收到以下錯誤:使用numpy將不同的數據類型保存到文件時出錯

File "C:\ENV\p34\lib\site-packages\numpy\lib\npyio.py", line 1162, in savetxt 
    % (str(X.dtype), format)) 
TypeError: Mismatch between array dtype ('int32') and format specifier ('%.18e') 

我使用下面的代碼寫入文件:

img.tofile(PATH + "add_info_to_img.dat") 

# append array_with_info to the beginning of the file 
f_handle = open(PATH + "add_info_to_img.dat", 'a') 
np.savetxt(f_handle, array_with_info) 
f_handle.close() 

數據信息:

img.shape 
Out[4]: (921600,) 
array_with_info.shape 
Out[5]: (5,) 
array_with_info.dtype 
Out[6]: dtype('int32') 
img.dtype 
Out[7]: dtype('uint8') 

有什麼建議?

+0

這可能與您的數據有關。我無法用相同類型的虛擬數據重現這一點。所以我們可能需要知道數據。 – languitar

回答

0

您的文件必須以二進制模式打開,並且您必須指定格式。

一個簡單爲例:

a=arange(3) 
b=arange(3.) 

with open('try.txt','wb') as f: 
    savetxt(f,a,'%d') 
    savetxt(f,b) 

"""  
0 
1 
2 
0.000000000000000000e+00 
1.000000000000000000e+00 
2.000000000000000000e+00 
""" 

但讀到向後將是困難的。 最好的辦法可能是在這裏使用np.savez('try2',a,b)

相關問題