получить доступ к массиву numpy с функционального языка - PullRequest
5 голосов
/ 22 марта 2011

Мой основной язык Python.Часто, когда мне нужно выполнить какую-то сложную задачу процессора для массива с пустым массивом, я использую scipy.weave.inline, чтобы соединить c ++ с отличными результатами.

Я подозреваю, что многие из алгоритмов (машинного обучения), тем не менее, могут быть написаныПроще на функциональном языке (схема, haskell ...).

Я думал.Можно ли получить доступ к данным массива (чтение и запись) с функционального языка вместо использования c ++?

Ответы [ 4 ]

4 голосов
/ 22 марта 2011

На данный момент не существует единого стандартного способа вызова Haskell из Python.Конечно, есть способы вызова haskell из C, а это означает, что в принципе нет никаких препятствий для вызова Haskell - просто не было сделано работы, чтобы сделать это особенно легко.

С другой стороны, если ваши данныесами структуры не огромны, их сериализация в программу на Haskell (либо через командную строку, либо с использованием клиент-серверной модели, например, с помощью thrift) очень проста, и, если стоимость вычислений является той, которая в достаточной степени доминирует, стоимость может бытьминимальный.

Наконец, очень легко вызвать Python из Haskell!Классический пакет для этого --pypy: http://hackage.haskell.org/package/MissingPy

Существует также новый пакет cpython, который пытается быть более полным: http://hackage.haskell.org/package/cpython

Концептуально, это не должно быть очень сложно,Я думаю, чтобы разместить ваше приложение Python в Haskell, а не наоборот.

4 голосов
/ 22 марта 2011

Вы могли бы взглянуть на использование какого-либо массива с общей памятью.Эта реализация, вероятно, будет хорошим местом для начала: https://bitbucket.org/cleemesser/numpy-sharedmem/src

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

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

1 голос
/ 22 марта 2011

Если у вас нет требований к используемой платформе, вы можете взглянуть на реализацию Numpy для .NET и IronPython, работающую на CLI. При этом вы сможете использовать F # в качестве функционального языка, например. Некоторые детали для Numpy и Scipy в .NET: здесь и список языков CLI .

0 голосов
/ 22 марта 2011

Я не могу представить, что попытка использовать NumPy через Haskell или схему будет проще, чем просто написание функционального Python. Попробуйте использовать itertools и functools, если вы хотите более функциональный ароматизированный питон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...