首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切片2d numpy阵列

切片2d numpy阵列
EN

Stack Overflow用户
提问于 2018-05-31 10:03:51
回答 2查看 530关注 0票数 1

我有一个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]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-31 10:25:15

这是因为通过padded_train_x[0:1]制作切片可以得到2d数组:

代码语言:javascript
复制
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])
票数 2
EN

Stack Overflow用户

发布于 2018-05-31 10:34:17

至于为什么会发生这种情况,让我们等待更多的专家,不确定是否真的有原因。

NumPy在切片时保持维度,在索引时删除它们。这实际上是Python的事情,列表也是如此。

您可以使用np.squeeze放下单维轴。

代码语言:javascript
复制
a = np.ones((2500, 500))

a[0].shape
(500,)

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

a[0:1].squeeze().shape
(500,)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50621680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档