Python numpy.empty提供非空数组

Python numpy.empty提供非空数组,python,numpy,Python,Numpy,当我使用foo=np.empty(1)创建空numpy数组时,生成的数组包含一个float64: >>> foo = np.empty(1) >>> foo array([ 0.]) >>> type(foo[0]) <type 'numpy.float64'> foo=np.empty(1) >>>福 数组([0.])) >>>类型(foo[0]) 为什么它不直接返回数组([]) 这是你需要的 您将其大小指定为1,您需要将其

当我使用
foo=np.empty(1)
创建空numpy数组时,生成的数组包含一个float64:

>>> foo = np.empty(1)
>>> foo
array([ 0.])
>>> type(foo[0])
<type 'numpy.float64'>
foo=np.empty(1) >>>福 数组([0.])) >>>类型(foo[0]) 为什么它不直接返回
数组([])

这是你需要的

您将其大小指定为1,您需要将其设置为0,就像他们在您未阅读的评论中告诉您的那样,其中说明:

返回给定形状和类型的新数组,而不初始化条目


empty
与创建没有元素的意义上的“空”数组无关。这仅仅意味着数组没有初始化其值(即,它们是不可预测的,并且取决于为数组分配的内存中发生的任何情况)。

如果您想要一个维度为
N
的size=0数组,可以使用
np.empty((0,)*N)


当然,如果数组有
.size==0
,则
空的
与您指定的
零的
相同。空的()
与列表
[]
不同。它需要一个你给它的参数。听起来你想要一个0大小的数组。但是为什么呢?这很少有用。参见@GhilasBELHADJ
np.empty()
的第一个输入是shape。我使用的代码不应该只生成一个维度为1的空数组吗?根据我的理解,如果我说
np.empty(2)
,我希望得到
array([[]]
。我该如何得到它?@GWarner。那将是维度2的空数组,而不是1。另外,形状与维度不同。数组
[1]
[1,2]
,和
[1,2,3]
都是一维的,但是它们有不同的形状。
empty
可能不是这个函数的最佳名称,因为
空列表
有非常不同的含义。
np.zero
np.one
可能是一个更好的起点。好的,谢谢,我正在尝试制作一个可以添加维度的空矩阵ns到。传统的python数组比numpy更适合这种情况吗?@GWarner:可能吧,不过最好的方法取决于您正在做什么。添加维度(或元素)使用numpy数组是一种低效的操作。numpy数组通过使用固定的内存布局来实现其速度,因此类似于
list.append
的操作需要创建一个全新的数组。因此,numpy数组不太适合需要动态更改大小的数组的任务。
foo = np.empty(0) 
>>> np.empty((0,)*1)
array([], dtype=float64)
>>> np.empty((0,)*2)
array([], shape=(0, 0), dtype=float64)