使用 Numpy 将 "layer" 附加到 3D 数组
Append a "layer" to 3D-Array with Numpy
我有一个尺寸为 12 x 12 x 4
的 numpy 数组。现在,我正在尝试向该立方体添加一个额外的层,从而生成一个 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)
仍在接受更好的建议。
你的想法是对的。稍微简化一下:
layer = np.repeat(np.arange(3)[:,None,None], data.shape[2], axis=2)
result = np.concatenate((data, layer), axis=1)
我有一个尺寸为 12 x 12 x 4
的 numpy 数组。现在,我正在尝试向该立方体添加一个额外的层,从而生成一个 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)
仍在接受更好的建议。
你的想法是对的。稍微简化一下:
layer = np.repeat(np.arange(3)[:,None,None], data.shape[2], axis=2)
result = np.concatenate((data, layer), axis=1)