有没有方法初始化形状的numpy数组并将其添加到其中?我将用一个列表示例来解释我需要什么。如果要创建循环中生成的对象列表,可以执行以下操作:
a = []
for i in range(5):
a.append(i)
我想用numpy数组做一些类似的事情。我知道vstack、concatenate等。但是,似乎需要两个numpy数组作为输入。我需要的是:
big_array # Initially empty. This is where I don't know what to specify
for i in range(5):
array i of shape = (2,4) created.
add to big_array
big_array
应该有一个形状(10,4)
。怎么做?
编辑:
我想补充以下澄清。我知道我可以定义big_array = numpy.zeros((10,4))
,然后填充它。但是,这需要预先指定大数组的大小。我知道这个箱子的尺寸,但如果我不知道呢?当我们在python中使用.append
函数扩展列表时,我们不需要提前知道它的最终大小。我想知道是否有类似的东西可以从较小的数组创建较大的数组,从一个空数组开始。
或者
或者
然而,在numpy中,我们通过将元素附加到列表来构造数组的思想并没有得到很好的应用,因为它的效率较低(numpy数据类型更接近底层C数组)。相反,应该将数组预先分配到所需的大小,然后填充行。不过,如果必须的话,可以使用
numpy.append
。我通常的做法是创建一个常规列表,然后将我的内容附加到其中,最后将列表转换为一个numpy数组,如下所示:
当然,在创建步骤中,最终对象占用的内存空间是原来的两倍,但追加到python列表中的速度非常快,而且还可以使用np.array()创建。
相关问题 更多 >
编程相关推荐