2015-05-26 3 views
1

Я сохраненную большой массив комплексных чисел с помощью питона,Python: Сохранение/загрузка больших массивов с помощью NumPy

numpy.save(file_name, eval(variable_name)) 

, который работал без каких-либо проблем. Тем не менее, нагрузка,

variable_name=numpy.load(file_name) 

дает следующее сообщение об ошибке,

ValueError: total size of new array must be unchanged 

Использование: Python 2.7.9 64-битный и файл 1,19 ГБ большой.

ответ

2

Там нет никаких проблем с размером вашего массива, вы, вероятно, не открыли файл в правильном направлении, попробуйте следующее:

with open(file_name, "rb") as file_: 
    variable_name = np.load(file_) 
0

В качестве альтернативы вы можете использовать pickle:

import pickle 

# Saving: 
data_file = open('filename.bi', 'w') 
pickle.dump(your_data, data_file) 
data_file.close() 

# Loading: 
data_file = open('filename.bi') 
data = pickle.load(data_file) 
data_file.close() 
+0

Это имеет значительные накладные расходы для массивов numpy. Предпочтительным является формат 'numpy.save' или hdf5. – rth

+0

Большое спасибо. Да, pickle/dump дал мне ошибку памяти для большого массива. Я попробую верхнюю версию через час. – mic

+0

Странно: в пятницу я запускал код без ошибок (даже после закрытия консоли) сегодня, я получил код повторно, даже после перезапуска python/spyder. (Данные были сохранены на локальном диске) Теперь я перезапустил сценарий, и я не могу воспроизвести ошибку. Как только ошибка повторится, я вернусь сюда. – mic

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