pyarrow.compute.register_vector_function#
- pyarrow.compute.register_vector_function(func, function_name, function_doc, in_types, out_type, func_registry=None)#
注册一个用户自定义的向量函数。
此 API 是实验性的。
向量函数是一种在数组上执行向量化操作的函数。当计算不适合其他更具体的函数类型(例如标量函数和聚合函数)时,通常会使用向量函数。
- 参数:
- func
callable() 实现该用户自定义函数的可调用对象。第一个参数是 UdfContext 类型的上下文参数。随后,它必须接受数量等于 in_types 定义的参数。它必须返回匹配 out_type 的 Array 或 Scalar。如果所有参数均为标量,则必须返回一个 Scalar,否则必须返回一个 Array。
要定义一个可变参数函数,请传入一个接受
*args的可调用对象。最后一个 in_type 将作为所有可变参数的类型。- function_name
str 函数名称。在函数注册表中,每个名称只能注册一个函数。
- function_doc
dict 包含键 “summary”(字符串)和 “description”(字符串)的字典对象。
- in_types
Dict[str,DataType] 一个将函数参数名称映射到其各自 DataType 的字典。参数名称将用于生成函数文档。此处指定的参数数量决定了函数的元数(arity)。
- out_type
DataType 函数的输出类型。
- func_registry
FunctionRegistry 可选的函数注册表,用于替代默认的全局注册表。
- func
示例
>>> import pyarrow as pa >>> import pyarrow.compute as pc >>> >>> func_doc = {} >>> func_doc["summary"] = "percent rank" >>> func_doc["description"] = "compute percent rank" >>> >>> def list_flatten_udf(ctx, x): ... return pc.list_flatten(x) >>> >>> func_name = "list_flatten_udf" >>> in_types = {"array": pa.list_(pa.int64())} >>> out_type = pa.int64() >>> pc.register_vector_function(list_flatten_udf, func_name, func_doc, ... in_types, out_type) >>> >>> answer = pc.call_function(func_name, [pa.array([[1, 2], [3, 4]])]) >>> answer <pyarrow.lib.Int64Array object at ...> [ 1, 2, 3, 4 ]