首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建一个numpy数组或用另一个数组填充另一个数组?

如何创建一个numpy数组或用另一个数组填充另一个数组?
EN

Stack Overflow用户
提问于 2017-04-21 16:17:20
回答 4查看 4.8K关注 0票数 5

如何创建一个形状为[2, 2, 3]的numpy数组,其中轴2处的元素是另一个数组,例如[1, 2, 3]

所以我想做一些类似这样的无效代码:

代码语言:javascript
复制
a = np.arange(1, 4)
b = np.full((3, 3), a)

生成一个类似以下数组的数组:

代码语言:javascript
复制
[[[ 1.  2.  3.]
  [ 1.  2.  3.]]
 [[ 1.  2.  3.]
  [ 1.  2.  3.]]]

当然可以使循环填充喜欢,但认为可能有一条捷径:

代码语言:javascript
复制
for y in range(b.shape[0]):
    for x in range(b.shape[1]):
        b[y, x, :] = a
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-21 16:30:26

有多种方法可以实现这一点。一种是在np.full((2,2,3), a)中使用np.full,正如迪瓦卡尔在评论中指出的那样。或者,您也可以使用np.tile,它允许您通过将一个输入数组重复给定的次数来构造一个数组。要构建示例,您可以这样做:

代码语言:javascript
复制
import numpy as np

np.tile(np.arange(1, 4), [2, 2, 1])
票数 3
EN

Stack Overflow用户

发布于 2017-04-21 16:33:53

如果您的numpy版本是>= 1.10,则可以使用broadcast_to

代码语言:javascript
复制
a = np.arange(1,4)
a.shape = (1,1,3)
b = np.broadcast_to(a,(2,2,3))

这会产生一个视图,而不是复制,因此对于大型数组来说会更快。编辑这看起来是您在演示中所要求的结果。

票数 2
EN

Stack Overflow用户

发布于 2017-04-21 16:34:36

根据Divakar的评论,答案也可以是:

代码语言:javascript
复制
import numpy as np
np.full([2, 2, 3], np.arange(1, 4))

另一种可能性是:

代码语言:javascript
复制
import numpy as np
b = np.empty([2, 2, 3])
b[:] = np.arange(1, 4)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43537439

复制
相关文章

相似问题

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