提供一维数组为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
。
作为说明文件tile
:
如果
A.ndim < d
,A
则通过添加新轴将其提升为d维。因此,将形状(3,)阵列提升为(1,3)以进行2D复制,或将形状(1、1、3)提升为3D复制。如果这不是所需的行为,请A
在调用此函数之前手动升级为d维。
获得想要的结果的最简单方法是a
用None
(或等价地np.newaxis
)切片以使其具有正确的形状。
作为一个简单的例子:
import numpy as np
a = np.arange(8)
result = np.tile(a[None, :, None], (4, 1, 5))
print result.shape
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句