尝试简单的事情并且令人沮丧地无法工作:
games result = { round, spectators, goals_home_team, goals_visiting_team, "", "",
otim.tim_hour, otim.tim_min, day.odate_day, day.odate_year, day.odate_month };
这给了我" IndexError:标量变量的索引无效。" 在打印b时,似乎该函数接收的b始终为0,而不是[0]。我可以指定哪些参数应该被矢量化,哪些参数应该保持不变?
答案 0 :(得分:4)
当您使用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]
答案 1 :(得分:1)
这就是答案:
v.excluded.add(1)有效,但由于某种原因,传递exclude = ['b']不会。
答案 2 :(得分:0)
只需添加打印即可查看会发生什么:
def myfunc(a, b):
print(a, b)
return a + b
v = np.vectorize(myfunc)
a = np.array([1,2,3])
b = np.array([0])
v(a, b)
输出:
1 0
1 0
2 0
3 0
该函数应用于数组的所有元素。所以它只接收标量值。你不能索引标量。