Python 使用平铺从二维数组构造三维数组

Python 使用平铺从二维数组构造三维数组,python,numpy,Python,Numpy,我有一个数组arr=np.array([0.0,0.0,1.0]) 我想压缩以下形状的数组promo\u class.shape,它是(2,3,3) 我想创建形状的重复数组(2,3,3) 你知道如何使用np.tile功能实现吗?只需用于视图- In [142]: arr = np.array([0.0, 0.0, 1.0]) In [144]: np.broadcast_to(arr,(2,3,3)) Out[144]: array([[[0., 0., 1.], [0.,

我有一个数组
arr=np.array([0.0,0.0,1.0])

我想压缩以下形状的数组
promo\u class.shape
,它是
(2,3,3)

我想创建形状的重复数组
(2,3,3)

你知道如何使用
np.tile
功能实现吗?

只需用于
视图
-

In [142]: arr = np.array([0.0, 0.0, 1.0])

In [144]: np.broadcast_to(arr,(2,3,3))
Out[144]: 
array([[[0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]],

       [[0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]]])
我们为什么要使用
视图
? 因为作为一个视图,它没有额外的内存开销,因此在运行时实际上是空闲的-

In [148]: arr = np.random.rand(300)

In [149]: %timeit np.broadcast_to(arr,(200,300,300))
100000 loops, best of 3: 3.13 µs per loop
如果需要具有自己内存空间的输出,请附加
.copy()


如果您致力于
np.tile
-

In [174]: np.tile(arr,(2,3,1))
Out[174]: 
array([[[0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]],

       [[0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]]])

有没有可能用np.tile函数做同样的事情?谢谢,这就是我要找的。我需要瓷砖作为Keras后端只支持瓷砖功能。
In [174]: np.tile(arr,(2,3,1))
Out[174]: 
array([[[0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]],

       [[0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]]])