2016-10-18 6 views
0

왜 4d 어레이를 슬라이스하면 3D 배열이 생깁니 까? 필자는 차원 중 하나에서 Extension 1을 가진 4 차원 배열을 기대했습니다.Numpy 4d 어레이 슬라이스

예 :

print X.shape 
(1783, 1, 96, 96) 

슬라이스 배열 :

print X[11,:,:,:].shape 

또는

print X[11,:].shape 

나에게 (1, 96, 96)을 제공하지만, 내가 (1, 1, 96, 96)

내가 b를 그것을 할 수 있습니다 예상 y print X[11:12,:].shape하지만 첫 번째 방법이 예상대로 작동하지 않는 이유가 궁금합니다. the docs

+1

또는 'X [[11], :] .shape'라고 말할 수 있습니다. – jez

답변

2

:

정수, i는 제외 1 감소 된 반환 대상의 차원을 i:i+1와 동일한 값을 반환한다. 특히, p 번째 요소 (정수 및 기타 모든 항목 :)를 갖는 선택 튜플은 N - 1 차원의 해당 하위 배열을 반환합니다. N = 1이면 반환 된 객체는 배열 스칼라입니다. 색인은 정수 때


따라서, 해당 인덱스의 값 (들) (하다)를 반환하고 해당 축이 제거된다. 하나 개의 차원에서 동작은 예상과 같습니다

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 1 차원이며, a[2]는 0 차원이다. 높은 치수

, X 경우는, X[11,:,:,:] 복귀 1 축 인덱스가 11과 동일하고 그 축이 제거 된 모든 값 4 차원 모양 (1783,1,96,96)이다. 따라서 X[11,:,:,:].shape(1,96,96)입니다. 슬라이스가 범위를 지정

같은 a[2:3]로 그 범위 내의 모든 값이 리턴되며, 축이 제거되지 않는다 :

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) 모양을 갖는다.

관련 문제