2017-02-23 17 views
0

У меня есть объект <class 'numpy.ndarray'>, который я хочу сохранить в txt-файле. Объект имеет размеры (форма) (130, 118, 118) и размер 1810120.Сохранить numpy ndarray в txt файл

Когда я пытаюсь использовать np.savetxt(f, object, delimiter=' ', fmt='1.10f') с f = open('test.txt', 'wb') я получаю ошибку

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\G****\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1139, in savetxt 
    raise error 
ValueError: fmt has wrong number of % formats: 1.10f 

Я пробовал различные комбинации 1. F, но ни один не работал. Предложения кто-нибудь?

UPDATE: После выполнения предложений от комментариев ниже, и добавление fmt='%1.10f' я получил это:

Traceback (most recent call last): 
    File "C:\Users\G****\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1158, in savetxt 
    fh.write(asbytes(format % tuple(row) + newline)) 
TypeError: only length-1 arrays can be converted to Python scalars 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\G****\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1162, in savetxt 
    % (str(X.dtype), format)) 
TypeError: Mismatch between array dtype ('int8') and format specifier ('%1.10f...... the '%1.10f goes on for quite a while) 
+0

try: 'fmt = '% 1.10f'' –

ответ

1

Попробуйте добавить %, например, использование fmt='%1.10f'. См. here.

Update:

import numpy as np 

obj = np.random.randint(10, size=(3, 4, 5), dtype=np.int8) # example array 

with open('test.txt', 'wb') as f: 
    np.savetxt(f, np.column_stack(obj), fmt='%1.10f') 

Обратите внимание на np.column_stack(obj) в последней строке и читать this, чтобы выяснить, почему он используется здесь. Если ваш массив numpy содержит целые числа, вы можете использовать fmt='%s'. Кроме того, np.row_stack(obj) может быть полезной альтернативой, в зависимости от того, как должен выглядеть файл.

+0

Спасибо! Не могли бы вы снова проверить мой отредактированный ответ? – Jespar

+0

Являются ли элементы вашего массива numpy 8-битными целыми числами? –

+0

Да, это правда. Означает ли это, что я не могу их спасти? – Jespar