You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyArrow Tensor类的用途是什么?求实用使用场景示例

PyArrow Tensor 类的用途与使用示例

PyArrow Tensor 是专门用于处理多维同构数值数据的容器,和 numpy ndarray 定位类似,但核心价值在于适配 Arrow 生态的高效存储、序列化与跨语言传递场景。它和 Arrow Table/Array 体系互补:Table 擅长结构化行列数据,而 Tensor 专注于多维数值型数据的轻量化表示与流转。

你之前尝试用 pa.table() 直接传入 Tensor 报错,原因是 Table 的列要求是一维 Arrow Array 类型,而 Tensor 是独立的多维数据容器,不能直接作为表的列元素使用。

基础使用示例

import pyarrow as pa
import numpy as np

# 从 numpy 数组创建 Tensor,可指定维度名称
x = np.random.normal(0, 1.5, size=(4, 3, 2))
tensor = pa.Tensor.from_numpy(x, dim_names=["batch", "height", "width"])

# 查看 Tensor 属性
print(f"形状: {tensor.shape}")
print(f"维度名称: {tensor.dim_names}")
print(f"数据类型: {tensor.type}")

# 转换回 numpy 数组
np_arr = tensor.to_numpy()

Tensor 持久化(存储与加载)

Tensor 可以直接序列化到磁盘,或嵌入到 Arrow 结构体中与其他数据关联存储:

# 保存 Tensor 到 Arrow 格式文件
with pa.OSFile("tensor_data.arrow", "wb") as f:
    pa.write_tensor(tensor, f)

# 从文件加载 Tensor
with pa.OSFile("tensor_data.arrow", "rb") as f:
    loaded_tensor = pa.read_tensor(f)

print(f"加载后形状: {loaded_tensor.shape}")

结合结构体在 Table 中存储多个 Tensor

如果需要在 Table 中关联元数据与多个 Tensor,可以将 Tensor 封装到结构体数组中:

# 创建元数据数组
ids = pa.array(["sample_0", "sample_1"])
# 创建包含多个 Tensor 的数组,指定类型为 pa.tensor()
tensor_list = pa.array(
    [pa.Tensor.from_numpy(np.random.rand(3,3)), pa.Tensor.from_numpy(np.random.rand(2,2))],
    type=pa.tensor()
)

# 构造结构体数组并转为 Table
struct_array = pa.struct({"id": ids, "tensor_data": tensor_list})
table = pa.table(struct_array)
print(table)

核心适用场景总结

  • 高效序列化多维数据,配合 Arrow 文件格式或 Parquet 做持久化,保留维度信息
  • 跨语言传递多维数组(比如 Python 与 C++/R 之间通过 Arrow 交换张量数据)
  • 作为 Arrow 生态中多维数据的标准容器,配合其他组件做数据流转

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:15:31