Ошибка памяти при попытке загрузить объектный файл R в массив numpy Python - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть файл R-объекта (.rda), который я хотел бы загрузить в массив numpy в python.К сожалению, следующий код выдает MemoryError, который, как мне кажется, не доходит до конца.

import numpy as np
import rpy2.robjects as robjects

robjects.r['load']('myrobject.rda')
rils = np.array(robjects.r['myobjectname'])

Ошибка генерируется относительно самой нижней строки кода, поэтому проблема заключается впреобразование объекта в массив Numpy, без загрузки объекта.Данные в основном представляют собой числа с плавающей запятой от одной до трех цифр в диапазоне от 0 до 1, но там также есть некоторые символы.

На моей машине установлена ​​64-битная версия Ubuntu 16.04 и работает Python 3.5.2 64-битнаяТаким образом, запуск 32-битной системы не является проблемой, как это было с подобными постами, которые я видел.У меня 16 ГБ оперативной памяти.Когда я использую htop, чтобы посмотреть на использование памяти во время выполнения этого кода, он постепенно увеличивается до примерно 4,5 ГБ перед выходом и выдачей ошибки.

Размер объекта, который я пытаюсь загрузить, составляет 113,7 МБ., хотя я понимаю, что файлы .rda сжимаются.

Я никогда раньше не видел подобной ошибки, и я был бы признателен за любую помощь, чтобы выяснить, что является причиной, и что я должен сделать, чтобы исправить это..

РЕДАКТИРОВАТЬ

Поскольку меня спросили, вот точная ошибка.

Traceback (most recent call last):
  File "rils_ga.py", line 10, in <module>
    rils = np.array(robjects.r['Aprobma'])
MemoryError

Aprobma соответствует myobjectname, который я использовал в исходном посте.

1 Ответ

0 голосов
/ 16 октября 2018

Если ошибка возникает только в строке

rils = np.array(robjects.r['Aprobma'])

это указывает на то, что объект был успешно загружен из файла .rda. Здесь вы сделаете по крайней мере копию данных в объектах R, чтобы создать пустой массив (плюс возможный временный объект при выполнении преобразования). Вы пытались использовать asarray, чтобы избежать дублирования (см. https://rpy2.github.io/doc/v2.9.x/html/numpy.html#from-rpy2-to-numpy)?

...