Как я могу передавать большие массивы между numpy и R?

#python #r #numpy #matrix

#python #r #numpy #матрица

Вопрос:

Я использую python и numpy / scipy для выполнения регулярных выражений и обработки результатов для приложения для обработки текста. Но я также хочу использовать некоторые статистические пакеты R.

Каков наилучший способ передачи данных из python в R? (И обратно?)

Кроме того, в какой-то момент мне нужно создать резервную копию массива на диск, поэтому я открыт для сохранения из python и загрузки thr, если это лучшее решение. Матрицы довольно большие (например, 100 000 x 10 000), поэтому использование разреженных матриц также может быть полезным.

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

Комментарии:

1. Проблема в том, что перекрестная публикация по разным SES — это неподходящий способ (помимо того факта, что это не поощряется). Одной из целей SE является создание долговременной записи отличных решений конкретных вопросов, доступ к которым можно получить, например, с сайтов Google или ссылок. Дублируя свой вопрос, вы повышаете вероятность получения разных хороших ответов с разных сайтов, что довольно хорошо, но какой из них вы бы приняли в конце концов? Более того, поскольку вы не уведомили статистику. Обратите внимание, что это было перекрестно размещено из SO, оно было просто перенесено. Теперь модерам приходится объединять их оба.

2. Объединено. Как сказал chl, пожалуйста, не размещайте один и тот же вопрос на нескольких сайтах в будущем.

3. Моя ошибка. Сначала я задал этот вопрос в crossvalidated, и мне сказали, что здесь это сработает лучше. После того, как я опубликовал здесь, другой пост также был перенесен. Для дальнейшего использования, как я мог бы сам перенести вопрос? Иногда трудно решить, какое сообщество лучше подходит для ответа на данный вопрос.

Ответ №1:

  • Вы уже изучали RPy? Это интерфейс python для R. Я думаю, это избавило бы вас от обработки данных.

  • Для резервного копирования ваших массивов NumPy вы можете использовать pickle. Поскольку это, по-видимому, создает много накладных расходов при сохранении огромных данных, массивы NumPy лучше всего сохранять с использованием стандарта HDF. Вот статья, посвященная этому: http://www.shocksolution.com/2010/01/10/storing-large-numpy-arrays-on-disk-python-pickle-vs-hdf5adsf/

Комментарии:

1. «Массивы NumPy лучше всего сохранять с использованием стандарта HDF»… HDF — это здорово, но это перебор, если вам просто нужно эффективно сохранить массив на диск. Для простого и эффективного сохранения и загрузки массивов numpy просто используйте numpy.save и numpy.load . Это то, для чего они предназначены, и они позволяют избежать (огромных) накладных расходов, возникающих при обработке массивов numpy. Конечно, если вы хотите загрузить массив с другого языка, HDF, вероятно, является хорошим маршрутом.

2. @Joe Kington: 1 хороший момент! Спасибо.

Ответ №2:

Используйте Rpy, http://rpy.sourceforge.net / , чтобы вызвать R из Python.

Предостережение заключается в том, что обе версии R и Python должны быть точно такими, для которых был создан двоичный файл Rpy. Таким образом, вам нужно быть осторожным при установке.

Комментарии:

1. Я получил один голос против за этот ответ. Почему? Из-за моего комментария к версиям? Что ж, я считаю, что это фактически верно, и полезно упомянуть об этом.

Ответ №3:

Я не могу прокомментировать «большие данные» между разделяемыми между R и Python, но мне было намного проще работать с pyRserve, чем с RPy или RPy2.

При этом мне любопытно, как вы обрабатываете текст? Python, очевидно, может многое предложить в области обработки текста, но, по статистике, в таких пакетах, как NLTK и пакет шаблонов из CLiPS, тоже много чего есть. Вам просто удобнее вести статистику в R, или в Python чего-то конкретного не хватает?

Комментарии:

1. > Вам просто удобнее делать статистику в R, или в Python чего-то конкретного не хватает? < Оба. Я собираюсь создавать свои собственные оценки, которые, как я ожидаю, будут намного проще в R.