根据NumPy的文件,numpy.ufunc.identity
是
包含ufunc的标识元素的数据属性(如果是) 有一个。如果没有,则属性值为None。
我不明白什么是身份元素。在阅读numpy.ufunc.reduce中的示例后,如下所示
r = op.identity # op = ufunc
for i in range(len(A)):
r = op(r, A[i])
return r
看起来身份值 i 仅用于初始化过程,以便对于具有两个参数的通用函数 f(x,y), f (i,y)= y 。通用功能的身份价值是什么?它用于什么?
答案 0 :(得分:4)
身份是来自math的术语。操作的标识值基本上是使操作无效的值。例如,附加标识为0,因为a + 0 = a
和0 + a = a
表示所有a
。所以如果你在翻译中这样做:
>>> numpy.add.identity
0
减法(2 - 0 = 0
,但0 - 2 = -2
)没有这样的数字,因此numpy.subtract.identity
为None
答案 1 :(得分:2)
尝试该示例代码:
In [34]: A = np.array([1,2,3])
In [35]: op = np.add
In [36]: r = op.identity
In [37]: r
Out[37]: 0
In [38]: for i in range(3):
...: r = op(r, A[i])
...:
In [39]: r
Out[39]: 6
现在有乘法;首先使用与add相同的起点:
In [40]: op = np.multiply
In [41]: r = 0
In [42]: for i in range(3):
...: r = op(r, A[i])
...:
In [43]: r
Out[43]: 0
现在有了多重身份:
In [44]: r = op.identity
In [45]: r
Out[45]: 1
In [46]: for i in range(3):
...: r = op(r, A[i])
...:
In [47]: r
Out[47]: 6
换句话说,identity
为op.reduce
提供了一个合适的起点。