我将带有“零复制”的箭头对象转换为 panda,但结果对象未对齐。
#create a pyarrow.table.Table from parquet file
pq_file=pq.ParquetFile(parquet_file_name)
arrow_table=pq_file.read()
#convert pyarrow.table.Table to panda with zero copy
df=arrow_table.to_pandas(zero_copy_only=True)
#check if the numpy array is aligned :
print("alignment: {}".format(df.as_matrix().__array_interface__['data'[0]%64))
代码返回:对齐:16
结论:NumPy 数组未对齐。当我使用“零拷贝”将 pyarrow.table.Table 转换为 panda 时,我得出结论,pyarrow.table.Table 本身未对齐。我哪里错了?
最佳答案
uwe 的回复:
- 我不确定
zero_copy_only
标志是否在以下环境中正常工作 Arrow 0.8,我们最近做了一些修复(但没有发布) 然而)。 - 即将推出的版本中有一个新的
buffers
属性 发布,您还可以在其中检查 PyArrow 的内存地址 箭。这对于在 Python 中验证零拷贝是有用的 真正的零拷贝。 - 您需要注意
df.as_matrix()
可能 如果您没有包含单个数据帧的数据框,也可以复制一份 D类型。
关于python - Apache arrow,零拷贝的 numpy 数组对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992342/