为 numpy 数组添加新维度和重复值

问题描述 投票:0回答:2

我有一个非常基本的问题。我认为这可以用 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 函数是什么

python numpy numpy-ndarray
2个回答
0
投票

逻辑依赖,每个平面是相同的还是线性的?

一定是立方体还是其他东西?

来自矩形还是正方形?

无论如何,使用Array.reshape

这是一个小例子

Array2 = Array1.reshape(len(Array1), len(Array1[0]), <someValue>)

另一个来源


0
投票

你有两个选择:

如评论中所述,您可以向数组添加另一个维度并重复:

np.repeat(array_1[:, :, None], Nz, axis=2)

更好的选择是使用

np.tile
。您不需要手动添加维度,当您想要沿现有维度之一重复时,它可以轻松扩展到其他情况:

np.tile(array_1, (1, 1, Nz))

基本上,您指定要沿每个轴重复数组的次数。

© www.soinside.com 2019 - 2024. All rights reserved.