尝试一些简单但令人沮丧的无效方法:
def myfunc(a,b): return a+b[0] v = np.vectorize(myfunc, exclude=['b']) a = np.array([1,2,3]) b = [0] v(a,b)
这给我“ IndexError:标量变量的无效索引。” 在打印b时,该函数接收的b始终为0,而不是[0]。我可以指定哪些参数应被向量化,哪些参数应保持不变?
当您使用excluded=['b']
的关键字参数b
被排除在外。因此,你必须调用v
与关键字参数,例如v(a=a, b=b)
代替v(a, b)
。
如果您希望v
使用排除第二个位置参数的位置参数调用,请使用
v = np.vectorize(myfunc) v.excluded.add(1)
例如,
import numpy as np def myfunc(a, b): return a+b[0] a = np.array([1,2,3]) b = [0, 1] v = np.vectorize(myfunc, excluded=['b']) print(v(a=a, b=b)) # [1 2 3] v = np.vectorize(myfunc) v.excluded.add(1) print(v(a, b)) # [1 2 3]