以下代码应该在 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 section (here 对于旧的 2.x 版本)
在 2.2.x 之前,仅导入就足够了。
That import alone is sufficient to switch an automatic conversion of numpy objects into rpy2 objects.
Why make this an optional import, while it could have been included in the function py2ri() (as done in the original patch submitted for that function) ?
Although both are valid and reasonable options, the design decision was taken in order to decouple rpy2 from numpy the most, and do not assume that having numpy installed automatically meant that a programmer wanted to use it.
关于python - 为 rpy2 转换 python 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2447454/