[英]3D tiling of a numpy array
提供一维数组作为a
:
a=np.arange(8)
我希望它以3D方案再现,以便具有这样的形状(n1, len(a), n3)
。 有没有办法通过np.tile
获得这个? 这似乎微不足道,但尝试:
np.shape( np.tile(a, (n1,1,n3)) )
要么
np.shape( np.tile( np.tile(a, (n1,1)), (1,1,n2) ) )
我从来没有得到我需要的东西,是结果形状(n1, 1, len(a)*n3)
或(1, n1, len(a)*n3)
。 也许是我不理解tile
是如何工作的......
发生的事情是,在应用平铺之前, a
正在制作1x1x8阵列。 你需要制作a
1x8x1阵列,然后调用tile
。
如果
A.ndim < d
,则通过预先添加新轴将A
提升为d维。 因此,形状(3)阵列被提升为(1,3)用于2-D复制,或形状(1,1,3)用于3-D复制。 如果这不是所需的行为,请在调用此函数之前手动A
提升为d维。
获得结果的最简单方法是使用None
(或等效地, np.newaxis
)切片a
以使其成为正确的形状。
作为一个简单的例子:
import numpy as np
a = np.arange(8)
result = np.tile(a[None, :, None], (4, 1, 5))
print result.shape
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.