[英]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.