我有一个形状为padded_train_x
的numpy数组(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]
答案 0 :(得分:2)
这是因为通过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])
答案 1 :(得分:1)
至于为什么会这样,让我们等一个更专家的人,不确定是否真的有原因。
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,)