¿Cuál es el valor predeterminado de las funciones numpy, donde where = False?

La documentación de ufunc dice:

dónde

Nuevo en la versión 1.7. Acepta una matriz booleana que se transmite junto con los operandos. Los valores de True indican que se calcule el ufunc en esa posición, los valores de False indican que se deje el valor solo en la salida.

¿Cuál es el comportamiento predeterminado, cuando no se da la out ?

Observé algunos comportamientos, que realmente no tienen sentido para mí:

     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 

    ¿Alguien sabe la razón / comportamiento subyacente? Especialmente np.reciprocal realmente no tiene sentido, ya que el valor recíproco nunca puede ser 0

    EDITAR: El comportamiento es aún más complejo:

     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... 

    Estoy usando Numpy versión 1.11.1

    Parece que la basura es exactamente lo que es: la memoria que se ha recolectado.

    Cualquiera que sea la función a la que esté llamando, reserva un bloque de memoria para colocar los resultados, pero nunca pone ningún resultado allí porque where=False . Obtendrá los mismos valores que obtendría de np.empty , es decir, cualquier basura que haya en ese bloque de memoria antes de la función que se le asignó.