如何创建一个形状为[2, 2, 3]
的numpy数组,其中轴2处的元素是另一个数组,例如[1, 2, 3]
所以我想做一些类似这样的无效代码:
a = np.arange(1, 4)
b = np.full((3, 3), a)
生成一个类似以下数组的数组:
[[[ 1. 2. 3.]
[ 1. 2. 3.]]
[[ 1. 2. 3.]
[ 1. 2. 3.]]]
当然可以使循环填充喜欢,但认为可能有一条捷径:
for y in range(b.shape[0]):
for x in range(b.shape[1]):
b[y, x, :] = a
发布于 2017-04-21 16:30:26
发布于 2017-04-21 16:33:53
如果您的numpy版本是>= 1.10,则可以使用broadcast_to
a = np.arange(1,4)
a.shape = (1,1,3)
b = np.broadcast_to(a,(2,2,3))
这会产生一个视图,而不是复制,因此对于大型数组来说会更快。编辑这看起来是您在演示中所要求的结果。
发布于 2017-04-21 16:34:36
根据Divakar的评论,答案也可以是:
import numpy as np
np.full([2, 2, 3], np.arange(1, 4))
另一种可能性是:
import numpy as np
b = np.empty([2, 2, 3])
b[:] = np.arange(1, 4)
https://stackoverflow.com/questions/43537439
复制相似问题