将numpy数组转换为Matrix rpy2,Kmeans

时间:2011-01-04 11:06:56

标签: rpy2

我有一个numpy 2D数组self.sub 我想在rpy2 kmeans中使用它。 k = robjects.r.kmeans(self.sub,2,20) 我总是得到以下错误: valueError:此刻无法为该类型做任何事情! 我该怎么办?

1 个答案:

答案 0 :(得分:4)

从rpy2 docs,R矩阵只是具有dim属性集的向量。所以对于一个numpy二维数组x

import rpy2.robjects as robj

nr, nc = x.shape
xvec = robj.FloatVector(x.transpose().reshape((x.size))
xr = robj.r.matrix(xvec, nrow=nr, ncol=nc)

你必须转换numpy数组,因为R按列填充矩阵。

编辑:实际上,你可以在R矩阵函数中设置byrow = True,然后你就不需要转置。