强制向NumPy数组添加维度

时间:2017-03-26 10:20:23

标签: python-2.7 numpy multidimensional-array dimensions

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

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

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

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

N×H×W ×1

令人惊奇的是,如果我trainAll[:,:,:,2:3],那么我会得到N*H*W*1,但我希望第一个维度分开,而不是最后一个维度。

老实说,我无法谷歌,因为我不知道该问什么。所以任何人都可以帮助我,这样我不仅可以分开第一维而且shape N×H×W ×1 而不是 N×H×W

3 个答案:

答案 0 :(得分:1)

我能够弄清楚,但仍然不知道我的答案是否正确。我想知道python如何做到这一点以及当形状转移到N*H*W而不是N*H*W*1时发生了什么

解决方案: trainAll[:,:,:,0:1]因此,而不是trainAll[:,:,:,1]选择它只是将其切片

答案 1 :(得分:1)

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

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

当您对切片进行切片时,首先将它们放在首位的原因是因为在使用单个索引时将结果切换为(n,),并通过添加(n, 1)进行切换新轴。

答案 2 :(得分:0)

我找到了以下内容并且效果更好:tf.expand_dims tensorflow docs,为了减少维度,请使用:tf.squeeze()此处tf指的是tensorflow