pyarrow / parquet 有这个不存储二维数组的限制是正确的。
但是,parquet(和箭头)支持嵌套列表,您可以将二维数组表示为列表列表(或者在 python 中,数组数组或数组列表也可以)。因此,一种选择是将您的二维数组转换为这种格式。
此类嵌套列表/数组工作的示例:
In [2]: df = pd.DataFrame(
...: {'a': [[np.array([1, 2, 3]), np.array([4, 5, 6])],
...: [np.array([3, 4, 5]), np.array([6, 7, 8])]]})
In [3]: df.to_parquet('test_nested_list.parquet')
In [4]: res = pd.read_parquet('test_nested_list.parquet')
In [5]: res['a']
Out[5]:
0 [[1, 2, 3], [4, 5]]
1 [[1, 2], [3, 4, 5]]
Name: a, dtype: object
In [6]: res['a'].values
Out[6]:
array([array([array([1, 2, 3]), array([4, 5, 6])], dtype=object),
array([array([3, 4, 5]), array([6, 7, 8])], dtype=object)],
dtype=object)