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

5f0d552i  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(151)

我有一个非常基本的问题。我认为这可以用numpy在一行代码中优雅地完成,但我不知道如何做到。假设我有一个形状为(Nx,Ny)的2D 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函数来完成这一行

pobjuy32

pobjuy321#

逻辑依赖,每个平面是相同的还是线性的?
一定是个立方体还是别的什么?
是长方形还是正方形
无论如何,使用Array.reshape
这是一个小例子

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

Another source

9o685dep

9o685dep2#

你有两个选择:
正如注解中提到的,您可以向数组添加另一个维度,并沿着该维度重复:

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

更好的选择是使用np.tile。您不需要手动添加维,并且当您想要沿着现有维之一重复时,可以轻松地将其扩展到其他情况:

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

基本上,您可以指定希望沿着每个轴重复阵列的次数。

相关问题