如何在numpy和R之间传递大数组?
我正在使用Python和numpy/scipy来处理文本,做一些正则表达式和词干提取的工作。不过,我也想用一些R语言的统计包。
请问从Python把数据传到R的最佳方法是什么?(还有从R返回到Python呢?)
另外,我需要在某个时候把数组备份到磁盘,所以如果从Python保存数据然后在R中加载是最好的解决方案,我也很乐意尝试。因为我的矩阵比较大(比如说100,000行 x 10,000列),所以使用稀疏矩阵可能也会比较好。
如果这已经被问过了,我表示歉意。我一直找不到把这些内容整合在一起的资料。
3 个回答
我不能评论在R和Python之间共享的“大型数据”,但我发现使用pyRserve比使用RPy或RPy2要简单得多。
话虽如此,我很好奇你在做什么样的文本处理?显然,Python在文本处理方面有很多优势,但在统计方面,像NLTK和CLiPS的Pattern包也有很多强大的工具。你是觉得在R中做统计更舒服,还是在Python中缺少了什么特定的功能呢?
可以使用 Rpy,网址是 http://rpy.sourceforge.net/,来从 Python 调用 R 语言。
需要注意的是,R 和 Python 的版本必须与 Rpy 这个工具所支持的版本完全一致。所以在安装的时候要特别小心。
你有没有看过 RPy?这是一个让Python和R语言可以一起工作的工具。我想这样可以让你在处理数据时省去不少麻烦。
如果你想备份你的NumPy数组,可以使用 pickle。不过,当你要保存很大的数据时,它可能会占用很多额外的空间,所以保存NumPy数组时,使用HDF标准会更好。这里有一篇文章讲解这个问题: http://www.shocksolution.com/2010/01/10/storing-large-numpy-arrays-on-disk-python-pickle-vs-hdf5adsf/