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

Numpy 4d阵列切片
EN

Stack Overflow用户
提问于 2016-10-18 17:29:49
回答 1查看 7K关注 0票数 3

为什么切片4d数组给我一个3d数组?我期望在其中一个维度中有一个范围为1的4d数组。

示例:

代码语言:javascript
复制
print X.shape
(1783, 1, 96, 96)

切片阵列:

代码语言:javascript
复制
print X[11,:,:,:].shape

代码语言:javascript
复制
print X[11,:].shape

给我(1, 96, 96),但我期望(1, 1, 96, 96)

我可以通过print X[11:12,:].shape来完成它,但是我想知道为什么第一种方法不能像我所期望的那样工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 17:43:21

医生们

一个整数,i,返回与i:i+1 相同的值,除了,返回对象的维数由1降低。特别是,带有p-th元素的选择元组--整数(和所有其他条目:) --返回具有维度N - 1的相应子数组。如果是N = 1,则返回的对象是数组标量。

因此,当索引是整数时,返回该索引的值(S),并移除相应的轴。在一个维度中,行为正如您所期望的那样:

代码语言:javascript
复制
In [6]: a = np.arange(5); a
Out[6]: array([0, 1, 2, 3, 4])

In [7]: a[2]
Out[7]: 2

In [8]: a[2].shape
Out[8]: ()

a是一维的,a[2]是0维的.

在高维中,如果X是4维且形状为(1783,1,96,96),那么X[11,:,:,:]将返回第一个轴指数等于11的所有值,然后删除该轴。所以X[11,:,:,:].shape(1,96,96)

当切片指定一个范围(如a[2:3] )时,将返回该范围内的所有值,并且不移除轴:

代码语言:javascript
复制
In [9]: a[2:3]
Out[9]: array([2])

In [10]: a[2:3].shape
Out[10]: (1,)

类似地,X[11:12, :, :, :]具有形状(1,1,96,96)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40114534

复制
相关文章

相似问题

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