跳到主要内容
Vane Data / API 参考

张量函数

张量函数构造和查看 TENSOR(dtype, shape) 值。可变形状张量存储为 STRUCT(data LIST, shape INTEGER[rank]),完全固定的形状使用密集 ARRAY。tensor() 始终产生可变形状张量,tensor_data 与 tensor_shape 要求可变形状张量。tensor_type 与存储契约见多模态数据。

签名

example.py
vane.tensor(data, shape) -> Expression
vane.tensor_data(value) -> Expression
vane.tensor_shape(value) -> Expression
vane.tensor_array(values, dtype) -> pyarrow.ExtensionArray

SQL:tensor(data, shape)、tensor_data(value) 和 tensor_shape(value)。tensor_array 仅 Python。

参数

名称类型说明默认值
data值或 Expression行主序的展平元素或兼容数组必填
shape非负整数序列或 Expression实际各维大小;维度不能为 NULL必填
valueTENSOR 值或 Expression待查看张量必填
valuesNumPy 数组或 None 的序列Arrow Tensor 列的行值必填
dtypeVane DuckDBPyType由 vane.tensor_type(element_type, shape) 构造的完整可变形状张量类型必填

只有 tensor_type 类型声明用 None 表示可变维度。传给 tensor 或 tensor_array 的每个非 NULL 值都必须具有明确的实际维度。

返回值与错误

tensor 返回可变形状 TENSOR,shape 参数决定秩与运行时各维大小。tensor_data 返回展平元素 LIST,tensor_shape 返回 INTEGER[rank];两者都要求可变形状张量,固定形状输入会报错。tensor_array 返回携带 arrow.variable_shape_tensor 扩展类型的已校验 pyarrow.ExtensionArray。NULL 输入返回 NULL;形状/类型不匹配以及非 NULL 张量中的 NULL 元素报错。

示例

example.py
import vane


con = vane.connect()
con.sql("SELECT tensor_data(t), tensor_shape(t) FROM (SELECT tensor([1, 2, 3, 4], [2, 2]) AS t)").show()

构造 Arrow 列时,传入包含形状声明的完整 Tensor 类型:

example.py
import numpy as np
import vane


dtype = vane.tensor_type(vane.sqltypes.DOUBLE, [None, 1])
rows = [np.ones((2, 1), dtype=np.float64), np.empty((0, 1), dtype=np.float64), None]
column = vane.tensor_array(rows, dtype)

来源与相关页面