繁体   English   中英

3D平铺的numpy阵列

[英]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

作为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM