Python 为什么numpy.empty_like()返回数组填充为零是不安全的?
我被我在第82页用Python阅读的数据分析内容弄糊涂了Python 为什么numpy.empty_like()返回数组填充为零是不安全的?,python,arrays,numpy,Python,Arrays,Numpy,我被我在第82页用Python阅读的数据分析内容弄糊涂了 In [25]: np.empty((2, 3, 2)) Out[25]: array([[[ 4.94065646e-324, 4.94065646e-324], [ 3.87491056e-297, 2.46845796e-130], [ 4.94065646e-324, 4.94065646e-324]], [[ 1.90723115e+083, 5.732935
In [25]: np.empty((2, 3, 2))
Out[25]:
array([[[ 4.94065646e-324, 4.94065646e-324],
[ 3.87491056e-297, 2.46845796e-130],
[ 4.94065646e-324, 4.94065646e-324]],
[[ 1.90723115e+083, 5.73293533e-053],
[ -2.33568637e+124, -6.70608105e-012],
[ 4.42786966e+160, 1.27100354e+025]]])
假设np.empty将返回一个全零数组是不安全的。
在许多情况下,如前所示,它将返回未初始化的垃圾值
numpy.zeros()
返回一个包含零的数组,但是为什么假设numpy.empty()
不是一个零数组是不安全的呢 numpy.empty()的实现不会将零值写入它为数组保留的内存地址。这会加快速度,但会留下以前占用内存空间的值。正如您所说,由numpy.empty()
生成的数组中的值在创建数组之前就存在了。然后我认为这些值可能是string或int,但它们最终会被转换为float64。我说的对吗?@l0o0是的,它们只是以前在那些地方记忆中的遗迹。当内存被释放时,它不会被零覆盖,因为这将是一个代价高昂的过程。“谢谢你的帮助,@Will Da SilvaAll他们说的是,有时候这样的数组都是零,有时候是像那个例子一样的奇数。”。因此,仅当您将为所有元素分配新值时才使用empty
。如果您认为此处的答案已解决问题,请单击旁边的绿色复选标记将其标记为“已接受”。否则,请添加评论,或编辑您的问题以澄清它。