gpt4 book ai didi

python - 第二次运行 np.empty

转载 作者:太空狗 更新时间:2023-10-30 01:05:48 24 4
gpt4 key购买 nike

在 Scipy 文档中写道:

The function zeros creates an array full of zeros, the function ones creates an array full of ones, and the function empty creates an array whose initial content is random and depends on the state of the memory. By default, the dtype of the created array is float64.

所以我运行了这段代码:

import numpy as np
np.empty((1,2))

然后返回:

array([[  6.92892901e-310,   8.42664136e-317]])

所以它返回一个随机数,一切都很好。

但是,当我第二次(在那个 shell 中)运行该代码时,它返回了一个零数组!

np.empty((1,2))
array([[ 0., 0.]])

问题来了,为什么它第二次返回零数组(而不是随机数)?

最佳答案

这不是随机的,它取决于您的计算机在为数组请求一些空间时提供给 NumPy 的内存字节中保存的内容。如果那里有除零以外的东西,那么这些将被解释为请求的数据类型(看似随机但更好的词是不可预测的)。

在您的示例中,您没有保存第一个数组,因此第一个数组的内存立即被重新使用。

>>> import numpy as np
>>> print(id(np.empty((20))))
2545385324992
>>> print(id(np.empty((20))))
2545385324992

现在到了令人惊叹的部分:似乎 Python(或 NumPy 或您的操作系统)在将内存再次提供给 NumPy 之前将内存归零。

如果你创建一个比它更大的数组,它不会是“零”,因为它是从其他地方获取的:

>>> print(np.empty((1, 2)))
[[ 1.25757479e-311 1.25757479e-311]]
>>> print(np.empty((1, 3)))
[[ 4.94065646e-324 9.88131292e-324 1.25757705e-311]]

关于python - 第二次运行 np.empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com