序列化 numpy 数组列表并将 back/deserialize 读入 Javascript

Serialize a list of numpy arrays and read back/deserialize into Javascript

考虑一个 numpy 数组列表:

arr = [np.linspace(a1,a2,11) for a1,a2 in [(1,10),(20,30)]]
nparr = np.array(arr)

我想将其序列化以传输到 Javascript REST 客户端。首选方法是

我已经对支持两种语言的 apache arrow 进行了初步调查。

注意:我尝试了以下方法:

发生了以下情况

pyarr = pya.array(nparr)


ArrowInvalid                              Traceback (most recent call last)
<ipython-input-11-68eb3e5f578f> in <module>
----> 1 pyarr = pya.array(nparr)

ArrowInvalid: only handle 1-dimensional arrays

所以 pyarrow 在它可以序列化的数据结构方面似乎非常有限。我也在研究 apache parquet 格式:但这似乎需要实际写入 disk/filesystem?

欢迎使用这两种技术的工作代码或可能不同的 library/approach。

A​​rrow 能够序列化浮点数组列表。但我认为如果列表是多维 numpy 数组,它需要一点帮助:

pa.array(
    arr.tolist(),
    pa.list_(pa.float64())
)

但是鉴于您的用例,由于所有数组的长度都相同,我建议使用 Table 而不是 Array

schema = pa.schema(
        [
            pa.field(str(i), pa.float64())
            for i in range(len(nparr))
        ]
        
    )

table = pa.Table.from_arrays(
    nparr,
    schema=schema
)