为什么一个空的numpy数组有一个形状,它意味着什么?

2024-04-16 13:40:50 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我像这样初始化numpy数组:

data = np.empty((413, 0), dtype=float)

它有一个形状,但它是“空的”

在这种情况下,空是什么意思?它是否用np.nan填充,如果是,为什么现在显示np.nan?如果没有,里面是什么?它只分配内存吗

还有,如何检查它是否为空?显然.shape不起作用。但它是空的

有人能澄清一下这个概念吗


Tags: numpy概念datanp情况数组nanfloat
3条回答

numpy.empty并不真正创建空数组。它创建了一个带有未初始化数据缓冲区的数组-数组的元素是内存中的任意垃圾。这不是随机的-它通常都是零,或者是最近释放的数组的内容,或者(可能是敏感的)来自其他一些最近释放的对象的数据。一个元素甚至可以是一个信号NaN,如果您试图使用它执行任何操作,它可能会使您的程序崩溃

没有办法对此进行测试


您还指定了长度为零的维度。这使得数组实际上是空的,因为它没有元素。您可以使用arr.size == 0测试这一点

Numpy文档称数组将被初始化为任意值。是的,将为条目分配内存

https://numpy.org/doc/1.18/reference/generated/numpy.empty.html

根据documentation报告:

Return a new array of given shape and type, without initializing entries.

empty, unlike zeros, does not set the array values to zero, and may therefore be marginally faster. On the other hand, it requires the user to manually set all the values in the array, and should be used with caution.

如果您计划以任何方式写入所有值,那么它可能是zeros的替代方案

相关问题 更多 >