如何使用rpy2将R复杂矩阵转换为numpy数组

时间:2015-07-07 14:18:07

标签: python r numpy rpy2

我很清楚如何将浮点/双R矩阵转换为numpy数组,但如果矩阵复杂,我会收到错误。

示例:

import numpy as np
import rpy2.robjects as robjects
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

m1=robjects.IntVector(range(10))
m2 = robjects.r.matrix(robjects.r['as.complex'](m1), nrow=5)
tmp=np.array(m2, dtype=complex) #ValueError: invalid __array_struct__

问题依然存在于以下代码行中:

tmp=np.array(m2)

如果矩阵不复杂

,一切正常
m2 = robjects.r.matrix(m1, nrow=5)
tmp=np.array(m2)

感谢您的帮助!

PS:请注意,以下脏技巧解决了这个问题,但并没有真正回答这个问题:

tmp=np.array(robjects.r.Re(m2))+1j*np.array(robjects.r.Im(m2))
PS2:似乎没有人能回答这个问题,我们是否应该得出结论rpy2中存在错误?

1 个答案:

答案 0 :(得分:2)

有时将rpy个对象转换为numpy会变得棘手,但将它们转换为python个对象(list,{{1}更加可靠首先,然后构建一个tuple。解决方案:

array