我想知道r = ufct.identity
在函数ufunc_reduce
内做了什么。它是否只是像r = 0
一样初始化操作?
a = np.array([2,3,4,5])
b = np.array([8,5,4])
c = np.array([5,4,6,8,3])
def ufunc_reduce(ufct, *vectors):
vs = np.ix_(*vectors)
r = ufct.identity
for v in vs:
r = ufct(r,v)
return r
ufunc_reduce(np.add,a,b,c)
答案 0 :(得分:4)
是的,对于ufunc np.add
,ufct.identity
是0
。但对于另一个功能,它可能是别的东西。例如,np.multiply.identity
为1
。
您显示的ufunc_reduce
功能事先并不知道它将给出什么功能,因此无法使用0
或{{1进行硬编码}}。它通过检查ufunc的1
属性来获得正确的值。