python - 使用 rPython 包将 numpy 数组导入到 R 中

标签 python json r numpy

在 pycharm 中,我的代码可以按预期工作。有一个函数在调用时返回一个 numpy 数组。

我想将该数组放入 RStudio 的环境中,例如数据帧或任何真正作为起点的东西。

这是我的简单代码

library(RJSONIO)
library(rPython)
locTest <-"/home/cornelis/Downloads/M1302000139_1442697993.722772.raw"
x<-python.call("get_frames",locTest,256,256)

这是输出。 RStudio 控制台中显示的 numpy 数组是正确的,但它告诉我它不是 JSON 可序列化的。我还意识到 rPython 包的 documentation没有将 python.call 分配给任何东西,但我不知道如何将 Python 函数调用的返回值分配给 R 中的变量(文档有点薄,但希望我只是没有在正确的位置查找)

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 243, 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([[[ 14.,  15.,  15., ...,   2.,   3.,   3.],
        [ 14.,  15.,  15., ...,   3.,   3.,   3.],
        [ 14.,  13.,  13., ...,   2.,   2.,   3.],
        ..., 
        [  2.,   2.,   2., ...,   1.,   1.,   1.],
        [  2.,   2.,   3., ...,   1.,   1.,   1.],
        [  3.,   4.,   3., ...,   1.,   1.,   2.]],

       [[ 11.,  13.,  13., ...,   3.,   3.,   3.],
        [ 11.,  11.,  12., ...,   3.,   3.,   3.],
        [ 11.,  11.,  10., ...,   2.,   3.,   4.],
        ..., 
        [  1.,   2.,   3., ...,   1.,   1.,   1.],
        [  1.,   3.,   2., ...,   1.,   1.,   1.],
        [  2.,   2.,   2., ...,   1.,   1.,   1.]],

       [[ 12.,  13.,  14., ...,   4.,   3.,   3.],
        [ 12.,  11.,  11., ...,   3.,   4.,   4.],
        [ 11.,  11.,   9., ...,   3.,   4.,   3.],
        ..., 
        [  1.,   2.,   2., ...,   1.,   1.,   1.],
        [  2.,   2.,   2., ...,   1.,   1.,   1.],
        [  2.,   2.,   3., ...,   2.,   1.,   1.]],

       ..., 
       [[ 74.,  77.,  78., ...,  88.,  89.,  89.],
        [ 77.,  78.,  76., ...,  89.,  89.,  88.],
        [ 79.,  78.,  77., ...,  89.,  87.,  88.],
        ..., 
        [ 39.,  38.,  34., ...,  56.,  56.,  53.],
        [ 38.,  39.,  35., ...,  55.,  56.,  55.],
        [ 36.,  38.,  36., ...,  55.,  56.,  58.]],

       [[ 81.,  79.,  79., ...,  93.,  91.,  92.],
        [ 79.,  78.,  78., ...,  91.,  93.,  91.],
        [ 78.,  78.,  78., ...,  89.,  90.,  88.],
        ..., 
        [ 39.,  37.,  35., ...,  59.,  57.,  55.],
        [ 37.,  35.,  36., ...,  59.,  59.,  57.],
        [ 38.,  38.,  37., ...,  56.,  60.,  61.]],

       [[ 79.,  79.,  79., ...,  89.,  90.,  91.],
        [ 77.,  78.,  78., ...,  89.,  89.,  88.],
        [ 77.,  77.,  76., ...,  88.,  86.,  86.],
        ..., 
        [ 40.,  36.,  33., ...,  59.,  58.,  59.],
        [ 36.,  35.,  33., ...,  58.,  58.,  57.],
        [ 35.,  36.,  36., ...,  59.,  57.,  58.]]], dtype=float32) is not JSON serializable
Error in python.get("_r_call_return") : Variable not found

following is the only related question I could find

最佳答案

我最终需要更改 python 代码,以便将 numpy 数组转换为列表。

在与同事闲聊并眯着眼睛看文档几个小时后,发现我还需要在 python.call 之前先使用 python.load

以下作品

> library(RJSONIO)
> library(rPython)
> python.load("/home/cornelis/PycharmProjects/TestProject/TestScript.py")
> firstFrame_raw<-python.call("get_frames","/home/cornelis/Downloads/M1302000139_1442697993.722772.raw",256,256)
> firstFrame_raw
...
[[2]][[46]]
  [1]   7   8   7   7   7   5   7   6   6   6   5   5   5   5   5   4   6   5   6   5   4   4   4   4
 [25]   3   3   4   4   4   4   4   4   4   3   3   2   2   2   2   2   2   2   1   1   1   1   0   1
 [49]   2   1   1   2   2   2   2   1   3   3   3   4   4   3   4   4   6   1
...

关于python - 使用 rPython 包将 numpy 数组导入到 R 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707208/

相关文章:

javascript - ReactJS:无法将 api 响应渲染到 h2 标签中,但可以将其记录到控制台

R:从每一行的不同列中选择值

python - matplotlib/python 中错误栏的边框

python - Numpy 数组的 keras 列表不是预期的大小模型

php - 在 Laravel 中找不到类 'App\Http\Controllers\Response' 错误

R Corrplot : italicize Y-axis labels

r - 将 qdap 放大器应用于否定词

python - 可以使 Python 构造函数更简洁吗?

python - 基于另一个数组对一个数组中的实例进行计数

json - 将 JSON 字段添加到 Scala 案例类