加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用rpy2将2d numpy数组保存为R文件格式

发布时间:2020-12-20 12:28:45 所属栏目:Python 来源:网络整理
导读:这是一个初学者的问题,但是如何使用rpy2将2d numpy数组保存到(压缩)R格式的文件中?为了清楚起见,我想将它保存在rpy2中,然后使用R读取它.我想避免使用csv,因为数据量会很大. 解决方法 看起来你想要 save command.我会使用 pandas R interface并做类似以下的
这是一个初学者的问题,但是如何使用rpy2将2d numpy数组保存到(压缩)R格式的文件中?为了清楚起见,我想将它保存在rpy2中,然后使用R读取它.我想避免使用csv,因为数据量会很大.

解决方法

看起来你想要 save command.我会使用 pandas R interface并做类似以下的事情.

import numpy as np
from rpy2.robjects import r
import pandas.rpy.common as com
from pandas import DataFrame
a = np.array([range(5),range(5)])
df = DataFrame(a)
df = com.convert_to_r_dataframe(df)
r.assign("foo",df)
r("save(foo,file='here.gzip',compress=TRUE)")

但是,可能会有更优雅的方式.我愿意接受更好的建议.以上,在R中将使用:

> load("here.gzip")
> foo
  X0 X1 X2 X3 X4
0  0  1  2  3  4
1  0  1  2  3  4

您可以绕过使用pandas并使用rpy2中的numpy2ri.有类似的东西:

from rpy2.robjects import r
from rpy2.robjects.numpy2ri import numpy2ri
a = np.array([[i*2147483647**2 for i in range(5)],range(5)],dtype="uint64")
a = np.array(a,dtype="float64") # <- convert to double precision numeric since R doesn't have unsigned ints
ro = numpy2ri(a)
r.assign("bar",ro)
r("save(bar,file='another.gzip',compress=TRUE)")

在R中:

> load("another.gzip")
> bar
     [,1]         [,2]         [,3]         [,4]         [,5]
[1,]    0 4.611686e+18 9.223372e+18 1.383506e+19 1.844674e+19
[2,]    0 1.000000e+00 2.000000e+00 3.000000e+00 4.000000e+00

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读