假设给出了一维数组A
。有没有一种简单的方法可以构建一个3D数组B
,所有i,j,k都是B[i,j,k] = A[k]
?您可以假设B的形状是规定的,B.shape[2] = A.shape[0]
。
答案 0 :(得分:8)
>>> k = 4
>>> a = np.arange(k)
>>> j = 3
>>> i = 2
>>> np.tile(a,j*i).reshape((i,j,k))
array([[[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]],
[[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]]]
答案 1 :(得分:3)
另一种简单的方法是简单的分配 - 广播将自动做正确的事情:
i = 2
j = 3
k = 4
a = numpy.arange(k)
b = numpy.empty((i, j, k))
b[:] = a
print b
打印
[[[ 0. 1. 2. 3.]
[ 0. 1. 2. 3.]
[ 0. 1. 2. 3.]]
[[ 0. 1. 2. 3.]
[ 0. 1. 2. 3.]
[ 0. 1. 2. 3.]]]
答案 2 :(得分:0)
for k,v in enumerate(A): B[:,:,k] = v