当前位置: 首页 > 面试题库 >

为rpy2转换python对象

微生永春
2023-03-14
问题内容

以下代码应在rpy2中创建一个热图

import numpy as np
from rpy2.robjects import r
data = np.random.random((10,10))
r.heatmap(data)

但是,它导致以下错误

Traceback (most recent call last):
  File "z.py", line 8, in <module>
    labRow=rowNames, labCol=colNames)
  File "C:\Python25\lib\site-packages\rpy2\robjects\__init__.py", line 418, in __call__
    new_args = [conversion.py2ri(a) for a in args]
  File "C:\Python25\lib\site-packages\rpy2\robjects\__init__.py", line 93, in default_py2ri
    raise(ValueError("Nothing can be done for the type %s at the moment." %(type(o))))
ValueError: Nothing can be done for the type <type 'numpy.ndarray'> at the moment.

从文档中,我了解到r.heatmap期望使用“数字矩阵”。如何将np.array转换为所需的数据类型?


问题答案:

您需要添加

import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

请参阅rpy2文档的numpy部分(此处为旧版2.x版本)中的更多内容

在2.2.x之前,仅导入即可。

仅此导入就足以将numpy对象自动转换为rpy2对象。

为什么将其作为可选导入,而它却可以包含在函数py2ri()中(就像为该函数提交的原始补丁中所做的那样)?

尽管两者都是有效且合理的选择,但设计决策是为了使rpy2与numpy脱钩最多,并且不认为自动安装numpy意味着程序员想要使用它。



 类似资料:
  • 问题内容: 相当于R中的命名列表的自然Python是字典,但是RPy2给您一个ListVector对象。 此时,a是ListVector对象。 我想拥有的东西可以像普通的Python字典一样对待。我的临时解决方法是: 因此,问题是…是否有更好的方法或我应该使用的RPy2内置方法? 问题答案: 我认为让ar向量进入a并不一定要如此,这是怎么回事: 当然,如果您不介意使用,它甚至更容易。结果将具有,而

  • 问题内容: 假设我们有一个类型的对象。我们定义了第二个。什么是最好的做法是“转换”的对象,以和保存所有数据? 问题答案: 这会进行“类转换”,但会带来附带损害。创建另一个对象并替换为BrainCore发布的对象会更安全- 但是此代码可以执行您要求的操作,而不会创建新对象。

  • 问题内容: 我需要知道如何将动态python对象转换为JSON。该对象必须能够具有多个级别的对象子对象。例如: 使用python 2.6的以下代码: 产生以下错误: 我不知道用户可能放入哪种子对象。是否有足够聪明的解决方案来检测属性是否是对象并自动对其进行解析? 更新 为在上包含子对象。 问题答案: 指定参数(doc):

  • 问题内容: 我需要加载XML文件并将内容转换为面向对象的Python结构。我要这样: 并将其变成这样: XML数据将具有比这更复杂的结构,并且我无法对元素名称进行硬编码。解析时需要收集属性名称并将其用作对象属性。 如何将XML数据转换为Python对象? 问题答案: 值得一看。 或者以另一种方式构建xml结构: 输出:

  • 问题内容: 是否可以将json字符串(例如,从twitter搜索json服务返回的json字符串)转换为简单的字符串对象。这是从json服务返回的数据的一小部分表示形式: 可以说我以某种方式将结果存储在某个变量中,例如 obj 。我希望获得适当的值,如下所示: 我已经尝试过使用,但是它给了我一个错误提示 问题答案: 我已经尝试过使用,但是它给了我一个错误提示 要从字符串加载,请使用(注意“ s”)

  • 问题内容: 如何加载YAML文件并将其转换为Python JSON对象? 我的YAML文件如下所示: 问题答案: 你可以使用PyYAML 并在ipython控制台中: