2010-05-05 5 views
4

1300x1341 행렬에 표시된 일부 데이터가 있습니다. 이 행렬을 여러 조각으로 나누어서 (예 : 9) 루프를 반복하여 처리 할 수 ​​있습니다. 데이터는 x [0,1]이 x [0,0]와 x [1,1] 외에 아래에 (또는 원하는 경우 위에) 유지된다는 의미로 정렬 된 상태를 유지해야합니다.
데이터를 이미징 한 것처럼 이미지 위에 세로 및 가로 두 줄을 그려 9 부분을 나타낼 수 있습니다. 내가 사용하는 경우Python/Numpy : 배열 나누기

는 numpys은 바꿀 (예. matrix.reshape가 (9,260,745) 또는 9260745의 다른 조합) 위에서 언급 한 순서가 손실되기 때문에이 필요한 구조를 생성하지 않습니다 ...

내가 오해 했나 재 형성 방법 또는이 방법으로 수행 할 수 있습니까?

다른 pythonic/numpy 방식으로이 작업을 수행 할 수 있습니까?

답변

4

numpy.split()의 설명서는 here ... 또는 아마도 형제 인 numpy.array_split()here을 사용해야합니다. 그들은 모양 변경이하는 것처럼

나는이 시험하지 않았다하지만 뭔가처럼 번호를 재 배열없이 동일한 하위에 배열을 분할하는 다음과 같습니다

numpy.array_split(numpy.zeros((1300,1341)), 9) 

트릭을 할해야합니다.

+0

감사합니다 – BandGap

2

모양 변경은 그 docs

그 데이터를 변경하지 않고 배열 새로운 형태를 제공 인용. 즉

, 그것은 주위에있는 모든 배열의 데이터를 이동하지 않습니다 - 그냥 배열의 차원에 영향을 미칩니다. 반면에, 당신은 slicing을 요구하는 것 같습니다; 다시 인용 :

는하지만 원래 상이한 크기의 치수 동일한 번호 배열을 추출 어레이 슬라이스와 걸음 가능하다. 슬라이싱과 스트라이딩은 목록과 튜플의 경우와 동일하게 적용됩니다 (단, 여러 차원에도 적용될 수 있음).

그래서 예를 thearray[0:260, 0:745]은 "상단 왼쪽 부분, thearray[260:520, 0:745] 상단 왼쪽의 중앙 부분, 등. 당신은에 목록의 다양한 부품에 대한 참조 (또는 해당 키와 DICT)을 가질 수있다

+0

슬라이싱은 물론 항상 옵션이지만 numpy가이 목적을 위해 보드에 뭔가를 가지고 있을지도 모른다는 느낌이 들었습니다 ... – BandGap