【发布时间】:2011-03-22 14:08:31
【问题描述】:
我的主要语言是 Python。通常,当我需要在 numpy 数组上执行一些 cpu 繁重的任务时,我会使用 scipy.weave.inline 来连接 c++ 并取得很好的效果。
我怀疑许多算法(机器学习的东西)可以用函数式语言(scheme、haskell...)更简单地编写。
我在想。是否可以从函数式语言访问 numpy 数组数据(读取和写入),而不必使用 c++?
【问题讨论】:
-
我的意思是在内存中访问它,但是对于小型数组/繁重的处理,将它从 python 保存到磁盘(或 /dev/shm)可能就足够了,在 haskell 中加载它,处理,保存到磁盘,从 python 加载。
-
@janto - 对不起,我在你回复的同时删除了我的评论......回想起来,我认为你的意思是在内存中访问它似乎很明显。无论如何,正如我在下面的回答中详细说明的那样,一种解决方案是为 numpy 数组使用共享内存缓冲区,然后从你的 haskell(或其他)进程中访问它......这确实增加了一层与编织等相比,复杂性...
-
@janto:你看过各种python机器学习包了吗?可能有快速的解决方案或模板可以在 python 中编写您自己的。
-
顺便说一句,谷歌搜索似乎表明 haskell 可以通过 FFI 与 C 库进行交互,反之亦然:haskell.org/haskellwiki/FFI_Introduction(我不是 haskell 人,如果这是,请原谅我完全脱离基地!)。如果您可以从 C 调用 haskell 例程,那么您可以通过 ctypes、cython、weave 等从 python 调用它......这可能会很痛苦,但听起来可能。这“只是”处理存储 numpy 数组的内存缓冲区的问题......
-
@JashAdel 我正在研究的算法不太流行(与支持向量机之类的东西相比),研究仍在进行中。因此,我所做的事情甚至没有很多 C 实现(信念传播、伪似然)。
标签: python haskell functional-programming numpy scipy