python - Apache arrow,零拷贝的 numpy 数组对齐

标签 python numpy apache-arrow

我将带有“零复制”的箭头对象转换为 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 的回复:

  1. 我不确定 zero_copy_only 标志是否在以下环境中正常工作 Arrow 0.8,我们最近做了一些修复(但没有发布) 然而)。
  2. 即将推出的版本中有一个新的 buffers 属性 发布,您还可以在其中检查 PyArrow 的内存地址 箭。这对于在 Python 中验证零拷贝是有用的 真正的零拷贝。
  3. 您需要注意df.as_matrix()可能 如果您没有包含单个数据帧的数据框,也可以复制一份 D类型。

关于python - Apache arrow,零拷贝的 numpy 数组对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992342/

相关文章:

python - 如何用 Python 编写自己的 OrderedDict 类?

python - 将 PIL numpy 3d 数组转换为 2d 亮度值

python - 对 numpy 结构化和记录数组进行排序非常慢

apache-spark - 如何本地读取 Feather/箭头文件?

r - 如何在 Apache Arrow 中使用泛型?

rust - 数据融合中的索引

Python:如何实现 __getattr__()?

c++ - 我可以获得在键盘上按下某个键的时间量吗

python - 将 numpy ndarray 数据放入 pandas

python - Google Cloud Datastore 模拟器不使用默认凭据