将 numpy 数组转换为矩阵 rpy2、Kmeans

发布于 2024-10-10 17:20:13 字数 137 浏览 5 评论 0原文

我有一个 numpy 2D 数组 self.sub 我想在 rpy2 kmeans 中使用它。 k = robjects.r.kmeans(self.sub,2,20) 我总是收到以下错误: valueError:目前无法对该类型执行任何操作! 我能做些什么?

I have a numpy 2D array self.sub
and i want to use it in rpy2 kmeans.
k = robjects.r.kmeans(self.sub,2,20)
i always get the following error:
valueError: nothing can be done for the type at the moment!
what can i do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ペ泪落弦音 2024-10-17 17:20:13

从 rpy2 docs 来看,R 矩阵只是向量他们暗淡的属性集。因此,对于 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 ,然后就不需要转置了。

From the rpy2 docs, R matrices are just vectors with their dim attribute set. So for a numpy two-dimensional array 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)

You have to transpose the numpy array because R fills matrices by columns.

Edit: Actually, you could just set byrow=True in the R matrix function, and then you wouldn't need to transpose.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文