强制向 NumPy 数组添加维度

Forcefully add dimension to NumPy array

我在数组 trainAll 中有一个四维数据,形状为 N × H × W × 3。我需要把它分开所以我做了

X_train = trainAll[:,:,:,1]
Y_train = trainAll[:,:,:,1:3]

正如预期的那样,Y_train.shapeN × H × W × 2

但是 X_train.shapeN × H × W 因为最后一个维度只有大小 1。 但是神经网络需要四维数组,所以它应该看起来像

N×H×W×1

令人惊奇的是,如果我这样做 trainAll[:,:,:,2:3] 然后我得到 N*H*W*1 但我想要分隔第一个维度,而不是最后一个。

老实说,我无法 google 因为我不知道该问什么。那么谁能帮帮我,这样我不仅可以分离第一维,而且 shapeN × H × W × 1 而不是 N × H × W ?

我已经弄明白了,但仍然不知道我的答案是否正确。我想知道 python 的方法以及当形状变为 N*H*W 而不是 N*H*W*1

时会发生什么

解决方案: trainAll[:,:,:,0:1] 所以不要 trainAll[:,:,:,1] 把它捡起来,而是把它切成薄片

只需尝试添加一个新轴作为所需的维度。 (这里,作为第四维度)。

X_train = trainAll[:, :, :, 0]
X_train = X_train[:, :, :, np.newaxis]
# now, X_train.shape will be N * H * W * 1

当你切片时你没有首先得到它们的原因是因为当使用单个索引时切片将结果作为 (n,) 并且你通过添加使其成为 (n, 1)一个新轴。

我发现以下内容并且效果更好:tf.expand_dims tensorflow docs,要减少维度而不是使用:tf.squeeze() 这里 tf 指的是 tensorflow