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

请教Numpy vectorize中signature参数的工作机制及用法

Numpy vectorize中signature参数的工作原理详解

核心作用

signature是给np.vectorize指定输入输出的形状模板,让它不再默认逐标量处理,而是按照你定义的维度规则批量调用目标函数,适配非标量的输入输出场景。

你的示例拆解

对于signature="(),(),(),()->(2)":

  • 前四个():每个括号对应函数a_function(a,b,c,d)的一个参数,表示这四个参数都是标量(0维数组)。批量调用时,vectorize会从输入数组里逐个取出标量传入原函数。
  • ->:用来分隔输入参数的形状模板和输出的形状模板。
  • (2):表示原函数的输出是一个长度为2的一维数组(1维,尺寸为2)。vectorize会把所有调用的结果拼接成符合这个形状的批量输出数组。

通用规则

  • 括号内的数字代表对应维度的尺寸:比如(m,n)表示一个m行n列的二维数组,()表示标量(0维)。
  • 支持用字母表示任意匹配的尺寸:比如(n)->(n,2),表示输入是长度为n的一维数组,输出是n行2列的二维数组,n会自动匹配输入的实际长度。
  • 多输入参数的形状可以不同:比如(3,), (2)->(3,2),表示第一个参数是长度3的一维数组,第二个是长度2的一维数组,输出是3行2列的二维数组。

注意事项

  • np.vectorize本质还是Python循环包装,不是真正的底层向量化运算,性能提升有限,适合快速适配已有函数,而非追求高性能场景。
  • 原函数必须能处理signature指定的输入形状:比如如果signature定义输入为(3),原函数要能接受长度为3的数组作为参数,否则会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:42:10