使用 Numpy 将“层”附加到 3D 数组

son*_*ice 5 numpy numpy-ndarray

我有一个 numpy 数组,其维度为12 x 12 x 4。现在我试图向这个立方体添加一个额外的层,从而形成一个12 x 13 x 4数组。第 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)
Run Code Online (Sandbox Code Playgroud)

仍然欢迎更好的建议。

hpa*_*ulj 2

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

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