1

ufunc文档指出:

在哪里

1.7 版中的新功能。接受与操作数一起广播的布尔数组。True 值表示计算该位置的 ufunc,False 值表示将值单独留在输出中。

默认行为是什么,什么时候out没有给出?

我观察到一些行为,这对我来说真的没有意义:

import numpy as np
a,b = np.ones((2,2))
np.add(a,b,where = False) #returns 0
np.exp(a, where = False)  #returns 1
np.sin(a, where = False)  #returns 1
np.sign(a, where = False) #returns 0
np.reciprocal(a, where = False) #returns 0

有谁知道根本原因/行为?尤其是np.reciprocal没有意义,因为倒数永远不会是 0

编辑:行为更加复杂:

a,b = np.ones(2)
np.add(a,b,where = False) #returns 6.0775647498958414e-316
a,b = 1,1
np.add(a,b, where = False) #returns 12301129, 
#running this line several times doesn't give the same result every time...

我正在使用 Numpy 版本 1.11.1

4

1 回答 1

4

它看起来像垃圾,因为它就是这样 - 被垃圾收集的内存。

无论您调用什么函数,都会留出一块内存来放入结果,但从不将任何结果放在那里,因为where=False. 您将获得相同的值np.empty- 即在函数分配之前该内存块中的任何垃圾。

于 2017-08-07T09:43:55.210 回答