将JSON字符串解析为numpy数组的最快方法

Bel*_*dar 11 python json numpy cython

我有巨大的json对象包含我需要转换成numpy数组进行处理的2D坐标列表.

然而使用json.loads后跟np.array()太慢.

有没有办法提高json创建numpy数组的速度?

import json
import numpy as np

json_input = '{"rings" : [[[-8081441.0, 5685214.0], [-8081446.0, 5685216.0], [-8081442.0, 5685219.0], [-8081440.0, 5685211.0], [-8081441.0, 5685214.0]]]}'

dict = json.loads(json_input)
numpy_2d_arrays = [np.array(ring) for ring in dict["rings"]]
Run Code Online (Sandbox Code Playgroud)

我会采取任何解决方案!

Dan*_*iel 5

最简单的答案就是:

numpy_2d_arrays = np.array(dict["rings"])
Run Code Online (Sandbox Code Playgroud)

由于这避免了在 python 中显式循环遍历数组,您可能会看到适度的加速。如果您可以控制创建,json_input最好将其写为串行数组。一个版本在这里