Python 为什么numpy.empty_like()返回数组填充为零是不安全的?

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

我被我在第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.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
。如果您认为此处的答案已解决问题,请单击旁边的绿色复选标记将其标记为“已接受”。否则,请添加评论,或编辑您的问题以澄清它。