NumPy 集成#

PyArrow 支持在 NumPy 数组和 Arrow 数组 (Arrays) 之间进行相互转换。

NumPy 转 Arrow#

要将 NumPy 数组转换为 Arrow,只需调用 pyarrow.array() 工厂函数即可。

>>> import numpy as np
>>> import pyarrow as pa
>>> data = np.arange(10, dtype='int16')
>>> arr = pa.array(data)
>>> arr
<pyarrow.lib.Int16Array object at ...>
[
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9
]

从 NumPy 进行转换时,支持多种输入数据类型 (dtypes),包括结构化数据类型或字符串。

Arrow 转 NumPy#

反之,可以使用 to_numpy() 方法生成一个供 NumPy 使用的 Arrow 数组视图。此操作仅限于那些在 NumPy 中具有与 Arrow 相同物理表示的原始类型,且前提是 Arrow 数据中没有空值 (nulls)。

>>> import numpy as np
>>> import pyarrow as pa
>>> arr = pa.array([4, 5, 6], type=pa.int32())
>>> view = arr.to_numpy()
>>> view
array([4, 5, 6], dtype=int32)

对于更复杂的数据类型,必须使用 to_pandas() 方法(该方法将构建一个具有 Pandas 语义的 NumPy 数组,例如用于处理空值的表示)。