簡體   English   中英

如何有效地從 numpy 數組初始化 pyarrow 中的固定大小的 ListArray?

[英]How to initialise a fixed-size ListArray in pyarrow from a numpy array efficiently?

我如何從適當准備的 numpy 數組中有效地初始化固定大小的pyarray.ListArray

pyarray.array的文檔表明嵌套的可迭代輸入結構有效,但實際上如果外部可迭代是 numpy 數組則不起作用:

import numpy as np
import pyarrow as pa

n = 1000
w = 3

data = np.arange(n*w,dtype="i2").reshape(-1,w)

# this works:
pa.array(list(data),pa.list_(pa.int16(),w))
# this fails:
pa.array(data,pa.list_(pa.int16(),w))
# -> ArrowInvalid: only handle 1-dimensional arrays

將直接匹配 Arrow 規范的輸入數組拆分為n單獨的 arrays 然后從那里重新組裝似乎很荒謬。

pyarray.ListArray.from_arrays似乎需要一個offsets參數,它只對可變大小列表有意義。

我相信您正在尋找 pyarrow.FixedSizeListArray.from_arrays ,遺憾的是,它似乎沒有記錄(我繼續提交了 JIRA 票

您首先需要將 numpy 數組重塑為連續數組。

import numpy as np
import pyarrow as pa

len = 10
width = 3
# Or just skip the initial reshape but keeping it in to simulate real data
arr = np.arange(len*width,dtype="i2").reshape(-1,width)
arr.shape = -1
pa.FixedSizeListArray.from_arrays(arr, width)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM