首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >初始化numpy数组

初始化numpy数组
EN

Stack Overflow用户
提问于 2010-12-27 04:52:45
回答 13查看 622.3K关注 0票数 157

有没有办法初始化一个形状的numpy数组并将其相加?我将通过一个列表示例来解释我需要什么。如果我想创建一个在循环中生成的对象列表,我可以这样做:

代码语言:javascript
复制
a = []
for i in range(5):
    a.append(i)

我想用numpy数组做一些类似的事情。我知道vstack,concatenate等。然而,这些似乎需要两个numpy数组作为输入。我需要的是:

代码语言:javascript
复制
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函数来扩展列表时,我们不需要事先知道它的最终大小。我想知道是否存在类似的方法来从较小的数组创建更大的数组,从一个空数组开始。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-12-27 04:56:34

numpy.zeros

返回一个给定形状和类型的新数组,用零填充。

numpy.ones

返回一个给定形状和类型的新数组,数组填充为1。

numpy.empty

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

然而,我们通过将元素附加到列表来构造数组的思路在numpy中使用得不多,因为它的效率较低(numpy数据类型更接近底层的C数组)。相反,您应该将数组预分配到所需的大小,然后填充各行。不过,如果有必要,您可以使用numpy.append

票数 183
EN

Stack Overflow用户

发布于 2010-12-30 20:08:27

我通常这样做的方式是创建一个常规列表,然后将我的内容追加到其中,最后将该列表转换为一个numpy数组,如下所示:

代码语言:javascript
复制
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()创建也是如此。

票数 47
EN

Stack Overflow用户

发布于 2017-07-04 04:52:02

在numpy 1.8中引入:

numpy.full

返回一个给定形状和类型的新数组,用fill_value填充。

示例:

代码语言:javascript
复制
>>> 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]])
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4535374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档