使用Numpy向3D阵列添加“图层”

时间:2018-02-06 15:27:58

标签: numpy numpy-ndarray

我有一个尺寸为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)

仍然可以提供更好的建议。

1 个答案:

答案 0 :(得分:1)

你有正确的想法。略有简化:

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