加上一个“;“层”;使用Numpy创建三维阵列

加上一个“;“层”;使用Numpy创建三维阵列,numpy,numpy-ndarray,Numpy,Numpy Ndarray,我有一个大小为12 x 12 x 4的numpy数组。现在,我尝试向这个立方体添加一个额外的层,从而生成一个12x13x4数组。这个第13层应该包含第一个轴的相应索引,因此例如寻址[7,13,:]会导致[7,7,7,7] 很难解释,但也许有人对如何使用numpy实现这一点有一些建议 编辑: 我找到了一个解决方案,尽管它似乎有点过于复杂: # Generate extra layer layer = np.repeat(np.arange(0, 12)[:, np.newaxis], data.s

我有一个大小为12 x 12 x 4的numpy数组。现在,我尝试向这个立方体添加一个额外的层,从而生成一个
12x13x4
数组。这个第13层应该包含第一个轴的相应索引,因此例如寻址
[7,13,:]
会导致
[7,7,7,7]

很难解释,但也许有人对如何使用numpy实现这一点有一些建议

编辑: 我找到了一个解决方案,尽管它似乎有点过于复杂:

# Generate extra layer
layer = np.repeat(np.arange(0, 12)[:, np.newaxis], data.shape[2], axis=1)

# Get dimensions right...
layer = np.expand_dims(layer, axis=1)

# ... and finally append to data
result = np.append(data, layer, axis=1)

仍然可以寻求更好的建议。

你的想法是对的。稍微简化一下:

layer = np.repeat(np.arange(3)[:,None,None], data.shape[2], axis=2)
result = np.concatenate((data, layer), axis=1)

使用
连接
。但要注意尺寸。