我有一个numpy数组padded_train_x of shape (2500,500)。
问题是,当我试图获得像padded_train_x[0].shape这样的数组元素的形状时,它会输出(500,),但是当我作为padded_train_x[0:1]运行它时,它会输出(1,500)。这一切为什么要发生?
我试图使用keras在LSTM模型中进行预测,但我必须使用padded_train_x[0:1]作为输入,而不是简单地使用padded_train_x[0]
发布于 2018-05-31 10:25:15
这是因为通过padded_train_x[0:1]制作切片可以得到2d数组:
a = np.linspace(1024).reshape(64,-1)
b = a[0]
c = a[0:1]
b
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
b[0]
0
c
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]])
c[0]
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])发布于 2018-05-31 10:34:17
至于为什么会发生这种情况,让我们等待更多的专家,不确定是否真的有原因。
NumPy在切片时保持维度,在索引时删除它们。这实际上是Python的事情,列表也是如此。
您可以使用np.squeeze放下单维轴。
a = np.ones((2500, 500))
a[0].shape
(500,)
a[0:1].shape
(1, 500)
a[0:1].squeeze().shape
(500,)https://stackoverflow.com/questions/50621680
复制相似问题