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

如何对numpy.vectorize的部分参数执行向量化处理?

解决np.vectorize参数形状不匹配的问题

问题出在np.vectorize默认会尝试对所有输入参数做广播匹配——你的第一个参数是18元素的数组,第二个是3元素的列表,形状无法对齐,所以触发报错。由于你需要将完整的字符串列表作为参数传递给每个函数调用,而非拆分元素,可通过以下几种方式解决:

方法一:使用excluded参数排除无需向量化的参数

通过excluded指定不需要被向量化处理的参数(可以是参数位置索引或参数名),这样np.vectorize会将该参数完整传递给每一次函数调用:

# 按参数位置排除(第二个参数,索引为1)
vec_func = np.vectorize(self.my_function, excluded=[1])
my_ndarray = vec_func(my_ndarray, ["a", "b", "c"])

# 或按参数名称排除
vec_func = np.vectorize(self.my_function, excluded=['lookup'])
my_ndarray = vec_func(my_ndarray, ["a", "b", "c"])

方法二:用lambda函数固定参数

把不需要向量化的参数提前绑定到lambda中,让np.vectorize只处理数组参数:

vec_func = np.vectorize(lambda num: self.my_function(num, ["a", "b", "c"]))
my_ndarray = vec_func(my_ndarray)

方法三:直接使用列表推导(更直观)

由于np.vectorize本质是循环包装,并非真正的向量化优化,直接用列表推导遍历数组元素再转成numpy数组,效果完全一致:

my_ndarray = np.array([self.my_function(num, ["a", "b", "c"]) for num in my_ndarray])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:09