numpy数组的3D平铺

格鲁克

提供一维数组为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 < dA则通过添加新轴将其提升为d维。因此,将形状(3,)阵列提升为(1,3)以进行2D复制,或将形状(1、1、3)提升为3D复制。如果这不是所需的行为,请A在调用此函数之前手动升级为d维。

获得想要的结果的最简单方法是aNone(或等价地np.newaxis切片以使其具有正确的形状。

作为一个简单的例子:

import numpy as np

a = np.arange(8)
result = np.tile(a[None, :, None], (4, 1, 5))
print result.shape

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章