有没有办法初始化一个形状的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
应该有一个shape (10,4)
。该怎么做呢?
编辑:
我想补充以下澄清。我意识到我可以定义big_array = numpy.zeros((10,4))
,然后填充它。但是,这需要提前指定big_array的大小。我知道这种情况下的尺寸,但如果我不知道呢?当我们在python中使用.append
函数来扩展列表时,我们不需要事先知道它的最终大小。我想知道是否存在类似的方法来从较小的数组创建更大的数组,从一个空数组开始。
发布于 2010-12-27 04:56:34
返回一个给定形状和类型的新数组,用零填充。
或
返回一个给定形状和类型的新数组,数组填充为1。
或
返回给定形状和类型的新数组,而不初始化条目。
然而,我们通过将元素附加到列表来构造数组的思路在numpy中使用得不多,因为它的效率较低(numpy数据类型更接近底层的C数组)。相反,您应该将数组预分配到所需的大小,然后填充各行。不过,如果有必要,您可以使用numpy.append
。
发布于 2010-12-30 20:08:27
我通常这样做的方式是创建一个常规列表,然后将我的内容追加到其中,最后将该列表转换为一个numpy数组,如下所示:
import numpy as np
big_array = [] # empty regular list
for i in range(5):
arr = i*np.ones((2,4)) # for instance
big_array.append(arr)
big_np_array = np.array(big_array) # transformed to a numpy array
当然,您的最终对象在创建步骤中占用的内存空间是原来的两倍,但是添加到python列表中是非常快的,并且使用np.array()创建也是如此。
发布于 2017-07-04 04:52:02
在numpy 1.8中引入:
返回一个给定形状和类型的新数组,用fill_value填充。
示例:
>>> import numpy as np
>>> np.full((2, 2), np.inf)
array([[ inf, inf],
[ inf, inf]])
>>> np.full((2, 2), 10)
array([[10, 10],
[10, 10]])
https://stackoverflow.com/questions/4535374
复制相似问题