使用rPython包创建和"获取"一个numpy数组

时间:2018-02-12 19:37:17

标签: python r api rpython

我正在尝试创建一个使用python的Rpackage,试图更好地理解我尝试创建的rPython包并找回Numpy数组:

此部分有效

library(rPython)
python.exec( "import os" )
python.exec( "import numpy as np" )

X = c(0.5, 0.2, 0.2)
python.exec(paste("X0 = np.array([", do.call(paste, c(as.list(X), sep =",")), "])"))

这部分不是

但是当我试图找回阵列时,它给了我一个错误:

python.get("X0")

来找我

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
  File "/usr/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")

TypeError:array([0.5,0.2,0.2])不是JSON可序列化的

知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要将numpy数组转换为json可序列化对象。这可以使用tolist()方法完成。证人:

>>> X0 = np.array([0,0])
>>> import json
>>> X0.tolist()
[0, 0]
>>> json.dumps(X0.tolist())
'[0, 0]'

希望有所帮助。