Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy函数的默认值是什么,其中=False?_Python_Numpy_Numpy Ufunc - Fatal编程技术网

Python numpy函数的默认值是什么,其中=False?

Python numpy函数的默认值是什么,其中=False?,python,numpy,numpy-ufunc,Python,Numpy,Numpy 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 = Fal

各国:

在哪里

版本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.interactive没有真正意义,因为倒数值永远不可能是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获得的值与从np.empty获得的值相同,也就是说,在函数分配内存块之前,内存块中存在任何垃圾

它看起来像垃圾,因为它就是垃圾收集的内存


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

您的第一行引发ValueError;其他的台词看起来也很尴尬。你能做一个实际的可运行的例子来测试吗?注:这可能是我的理解,但False不是布尔数组。也许函数将其强制转换为1,但文档中没有说明。我无法重现您的问题:第二个问题引发ValueError:请求对迭代器操作数进行自动分配,并将其标记为可读,但启用了无延迟分配的缓冲。这是针对NUMPY1.13的。有趣的事实:NUMPY1.11的同一行不会引发异常,但返回-1.4916681462400413e-154。绝对小于np.finfonp.float64.eps,因此为0,但不是整数。这很棘手,因为where with out根本没有多大意义,因为ufunc标识和0作为返回数组中的默认值都没有任何意义。我猜这只是分配一个np.empty_likea out数组,然后你会被随机值卡住,特别是如果你定义where=False并且没有在新创建的数组中放入任何值;其他的台词看起来也很尴尬。你能做一个实际的可运行的例子来测试吗?注:这可能是我的理解,但False不是布尔数组。也许函数将其强制转换为1,但文档中没有说明。我无法重现您的问题:第二个问题引发ValueError:请求对迭代器操作数进行自动分配,并将其标记为可读,但启用了无延迟分配的缓冲。这是针对NUMPY1.13的。有趣的事实:NUMPY1.11的同一行不会引发异常,但返回-1.4916681462400413e-154。绝对小于np.finfonp.float64.eps,因此为0,但不是整数。这很棘手,因为where with out根本没有多大意义,因为ufunc标识和0作为返回数组中的默认值都没有任何意义。我猜这只是分配一个np.empty_likea out数组,然后你会被随机值卡住,特别是当你定义where=False并且没有在新创建的数组中放入任何值时。