我有一个非常基本的问题。我认为这可以用 numpy 在一行中优雅地完成,但我不知道如何。假设我有一个形状为
(Nx,Ny)
的二维numpy数组,我想添加一个形状为Nz
的第三维。对于每个固定的index_x,index_y
我想为新z轴上的所有索引重复数组的值。
我可以通过像这样的基本说明轻松做到这一点
# array_1 has shape (Nx,Ny)
array_2 = np.zeros((Nx,Ny,Nz))
for idx_x in range(Nx):
for idx_y in range(Ny):
array_2[idx_x,idx_y,:] = array_1[idx_x,idx_y]
但我想知道在一行中执行此操作的确切 numpy 函数是什么
逻辑依赖,每个平面是相同的还是线性的?
一定是立方体还是其他东西?
来自矩形还是正方形?
无论如何,使用Array.reshape
这是一个小例子
Array2 = Array1.reshape(len(Array1), len(Array1[0]), <someValue>)
你有两个选择:
如评论中所述,您可以向数组添加另一个维度并重复:
np.repeat(array_1[:, :, None], Nz, axis=2)
np.tile
。您不需要手动添加维度,当您想要沿现有维度之一重复时,它可以轻松扩展到其他情况:
np.tile(array_1, (1, 1, Nz))
基本上,您指定要沿每个轴重复数组的次数。