2017-02-10 7 views
1

Я пытаюсь сбрасывать два массива numpy, которые имеют два разных типа данных uint8 и int32 в файл. Я получаю следующее сообщение об ошибке:Ошибка при сохранении различных типов данных в файле с использованием 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

Ваш файл должен быть открыт в двоичном режиме, и вы должны указать формат.

Простой Exemple:

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)

 Смежные вопросы

  • Нет связанных вопросов^_^