where=False 时 numpy 函数的默认值是多少?

What is the default of numpy functions, with where=False?

ufunc documentation 状态:

where

New in version 1.7. Accepts a boolean array which is broadcast together with the operands. Values of True indicate to calculate the ufunc at that position, values of False indicate to leave the value in the output alone.

没有给出 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

有人知道底层的 reason/behavior 吗? 特别是 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

它看起来像垃圾,因为它正是垃圾回收的内存。

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