2014-04-08 2 views
1

하나의 차원을 따라 두 개의 분할 영역 객체가 정의되어 있으면 결합하여 numpy 배열을 분할하는 데 사용할 수있는 다차원 분할 객체를 얻을 수 있습니까?numpy 배열 슬라이스를 위해 다차원 분할 영역으로 분할 작성

slice2d = (s1, s2) 
mat[slice2d] 

가 작동합니다

mat = np.zeros((10,10), dtype=np.uint8) 
s1 = slice(0,5) 
s2 = slice(0,5) 
mat[s1,s2] # I want to achieve this effect with one slice object  
slice2d = slice(s1, s2) # does not throw an error 
mat[slice2d] # but this does not work 
+4

슬라이스 객체 여야하나요? 'tup2d = (s1, s2)'는 단일 객체이고'mat [tup2d] '는'mat [s1, s2]'와 같습니다 ... – unutbu

답변

1

으로는 다차원 슬라이스 한 후, 실제로 slice 객체의 tuple 또는 list입니다 어떻게 될지, @unutbu에 의해 지적했다. 마찬가지로 이것을 3D, ..., N-D 배열로 확장 할 수 있습니다.

slice3d = (s1, s2, s3) 
... 
sliceNd = (s1, s3, s3, ..., sN) 
+0

고마워요. 슬라이스 생성자에 대한 인수가 정수 일 필요는 없다는 점이 궁금합니다. 위의 슬라이스 (s1, s2)를 사용할 수 있습니까? –

+0

@SeanMackesey 예, 'np.ndarray' 객체와 같은 일련의 슬라이스 객체를 허용하는 모든 객체에서 사용할 수 있습니다. –