2014-02-10 3 views
1

Im은 numpy에서 비교적 새로운 기능이지만 h5 파일을 읽고 쓰는 데이 파일을 사용하기 시작했습니다. 주어진 영역의 각 픽셀 값을 h5 파일로 읽는 일부 구역 통계를 계산 한 이미지 데이터가 있습니다. 그러나 나는 많은 픽셀 값 (아마도 수천만)을 가지고 있으며이 데이터를 서브 샘플링하여 데이터 크기를 줄일 수 있지만 데이터의 일반적인 분포는 유지할 수 있습니다.숫자가 작은 배열을 서브 샘플링 하시겠습니까?

배열의 200 번째 값을 모두 샘플링하는 간단한 방법이 있는지 궁금합니다.

나는 이미 가지고있는 코드를 내놓았지만 내 코드는 기존 데이터를 읽을 때까지만 사용됩니다. Im이 어떻게 서브 샘플링 할 수 있는지에 관해 완전히 고집했습니다.

감사

당신은 배열 슬라이스를 사용할 수 있습니다
+0

질문이 좀 불분명하다; 디스크의 크기 또는 메모리의 크기에 대한 귀하의 우려입니까? 디스크 공간에 신경 쓰지 않는다면; h5 파일에서 슬라이스 된 뷰를 읽을 수 있습니다. 디스크에서 모든 것을 읽을 필요가 있기 때문에 여전히 느려질 것입니다. 그러나 서브 샘플링은 모든 픽셀을 합산하여 수행하는 것이 더 좋습니다. 그렇지 않으면 불쾌한 앨리어싱 유물을 얻을 수 있습니다. 디스크 공간에 이의가 없으면 h5 파일에 전체 밉맵을 저장할 수 있습니다. 최상의 성능과 품질을 제공하지만 디스크 공간 사용을 줄이기보다는 증가시킬 것입니다. –

답변

8

:

>>> import numpy as np 
>>> a = np.eye(1000) 
>>> a[::200, ::200] 

array([[ 1., 0., 0., 0., 0.], 
     [ 0., 1., 0., 0., 0.], 
     [ 0., 0., 1., 0., 0.], 
     [ 0., 0., 0., 1., 0.], 
     [ 0., 0., 0., 0., 1.]]) 
관련 문제