首页 > 解决方案 > 为什么一个空的 numpy 数组有一个形状,这是什么意思?

问题描述

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

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

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

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

另外,我如何检查它是否为空?显然.shape行不通。但它是空的...

有人可以澄清这个概念吗?

标签: pythonnumpy

解决方案


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

没有办法对此进行测试。


您还指定了长度为零的维度。这使得你的数组真的是空的,因为它没有元素。您可以使用arr.size == 0.


推荐阅读