如何有效地从 numpy 数组初始化 pyarrow 中的固定大小的 ListArray?
How to initialise a fixed-size ListArray in pyarrow from a numpy array efficiently?
我如何有效地初始化一个固定大小的 pyarray.ListArray
来自适当准备的 numpy 数组?
documentation of 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
个单独的数组,然后从那里重新 assemble 似乎很荒谬。
pyarray.ListArray.from_arrays
似乎需要一个 offsets
参数,它只对可变大小列表有意义。
我相信您正在寻找 pyarrow.FixedSizeListArray.from_arrays,遗憾的是,它似乎没有记录(我继续提交 a JIRA ticket)
您需要先将您的 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)
我如何有效地初始化一个固定大小的 pyarray.ListArray
来自适当准备的 numpy 数组?
documentation of 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
个单独的数组,然后从那里重新 assemble 似乎很荒谬。
pyarray.ListArray.from_arrays
似乎需要一个 offsets
参数,它只对可变大小列表有意义。
我相信您正在寻找 pyarrow.FixedSizeListArray.from_arrays,遗憾的是,它似乎没有记录(我继续提交 a JIRA ticket)
您需要先将您的 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)