使用 rPython 包创建和 "getting" 一个 numpy 数组
Using the rPython package for creating and "getting" a numpy array
我正在尝试创建一个在其中使用一些 python 的 Rpackage,以试图更好地理解我尝试创建并取回 Numpy 数组的 rPython 包:
这部分有效
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 可序列化的
知道我做错了什么吗?
您需要将 numpy 数组转换为 json 可序列化对象。这可以使用 tolist() 方法来完成。见证人:
>>> X0 = np.array([0,0])
>>> import json
>>> X0.tolist()
[0, 0]
>>> json.dumps(X0.tolist())
'[0, 0]'
希望对您有所帮助。
我正在尝试创建一个在其中使用一些 python 的 Rpackage,以试图更好地理解我尝试创建并取回 Numpy 数组的 rPython 包:
这部分有效
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 可序列化的
知道我做错了什么吗?
您需要将 numpy 数组转换为 json 可序列化对象。这可以使用 tolist() 方法来完成。见证人:
>>> X0 = np.array([0,0])
>>> import json
>>> X0.tolist()
[0, 0]
>>> json.dumps(X0.tolist())
'[0, 0]'
希望对您有所帮助。