代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

python-将numpy数组转换为json

  •  0
  • fightstarr20  · 技术社区  · 5 年前

    我有一只蟒蛇 numpy 数组称为 myarray 看起来像这样……

    [[148 362]
     [153 403]
     [163 443]
     [172 483]
     [186 521]
     [210 553]
     [239 581]
     [273 604]
     [314 611]
     [353 602]]
    

    我想创建 JSON 看起来像这样……

    myjson = [
        {'section': '3',
         'x': '163',
         'y': '362',
        },
        {'section': '7',
         'x': '239',
         'y': '581',
        },
        {'section': '10',
         'x': '353',
         'y': '602',
        },
    ]
    

    这代表 3rd , 7th 10th 原图中的线条 麻木的 数组。有没有人能举一个类似的例子?

    3 回复  |  直到 5 年前
        1
  •  2
  •   iz_    5 年前

    为了补充Andrii的答案,我相信您还可以像这样解包数组,使其稍微干净一点:

    [{'section': i+1, 'x': x, 'y': y} for i, [x, y] in enumerate(myarray) if i in [2, 6, 9]]
    
        2
  •  1
  •   andnik    5 年前

    如果输入数组是 arr 我相信你想要这样的东西:

    [{'section': i+1, 'x': x[0], 'y': x[1]} for i, x in enumerate(arr) if i in [2, 6, 9]]
    

    [2,6,9]是您的[3,7,10]位置,仅从0开始。

        3
  •  1
  •   Fatih1923    5 年前

    pandas 提供了一个方便的解决方案:

    import pandas as pd
    import numpy as np
    
    df=pd.DataFrame(myarray, columns=["x", "y"])
    df["Section"]=df.index
    
    df.to_json(orient="records")
    

    这就产生了:

     '[{"x":148,"y":362,"Section":0},{"x":153,"y":403,"Section":1},
    {"x":163,"y":443,"Section":2},{"x":172,"y":483,"Section":3},
    {"x":186,"y":521,"Section":4},{"x":210,"y":553,"Section":5},
    {"x":239,"y":581,"Section":6},{"x":273,"y":604,"Section":7},
    {"x":314,"y":611,"Section":8},{"x":353,"y":602,"Section":9}]'
    

    解决方案有点不同,但您可以很容易地在纯Python中找到将其转换为结构的方法。