Python 切片二维numpy阵列

Python 切片二维numpy阵列,python,numpy,Python,Numpy,我有一个形状(2500500) 问题是,, 当我试图得到这个数组元素的形状时 padded\u train\u x[0]。shape它输出(500,),但当我以padded\u train\u x[0:1]运行它时,它输出(1500)。为什么会发生这种情况 我试图使用keras在LSTM模型中进行预测,但我必须使用填充列[0:1]作为输入,而不是简单的填充列[0],这是因为通过填充列[0:1]进行切片可以得到2d数组: a = np.linspace(1024).reshape(64,-1) b

我有一个形状
(2500500)

问题是,, 当我试图得到这个数组元素的形状时
padded\u train\u x[0]。shape
它输出
(500,)
,但当我以
padded\u train\u x[0:1]运行它时,
它输出
(1500)
。为什么会发生这种情况


我试图使用keras在LSTM模型中进行预测,但我必须使用
填充列[0:1]
作为输入,而不是简单的
填充列[0]

,这是因为通过
填充列[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])

至于为什么会发生这种情况,让我们等一个更专业的人,不确定是否真的有原因

NumPy在切片时保留尺寸,在索引时删除尺寸。它实际上是Python的东西,列表也是如此

您可以使用
np.挤压

a = np.ones((2500, 500))

a[0].shape
(500,)

a[0:1].shape
(1, 500)

a[0:1].squeeze().shape
(500,)