2017-12-30 56 views
0

저는 파이썬 배열 모양 (19, 73984)을 가지고 있습니다. 이것은 272 x 272 픽셀 크기의 19 회색 평면 이미지를 나타냅니다. 나는 이것을 처리하여 피드 포워드 뉴럴 네트워크 (feed forward neural network)에 넣을 수 있기를 원하지만 배치로 먹일 수 있기를 원한다. for 루프에서 실행되는 일종의 함수가있을 것으로 예상됩니다. 이 함수는 반환 할 항목 수와 위치를 알기 위해 데이터 집합 배열, 일괄 처리 크기 및 반복 인덱스 값을 받아야합니다. 예 : idataset을 통해 반복 될 때까지 특정의 위치에 대한 데이터의 시작 청크를 리턴하는 데 사용되는 루프 반복에 대한 인덱스이다 def get_batch_data(i, dataset, batch_size):특정 위치에서 시작하는 Python 3 분할 배열

. 더 좋은 방법이 있나요? 아니면이 문제를 해결할 수 있습니까? 감사합니다.

+0

왜 배치 파일 태그? 데이터가 이미 파이썬 배열에 있다면, 파이썬 환경에 머물러 있지 않은 이유는 무엇입니까? – jwdonahue

+0

나는 당신이 무엇을 의미하는지 이해하지 못할까 두려워한다. –

+0

질문은 - 유용한 덩어리를 구성하는 것은 무엇인가? ... 그것은 당신이 이미 이미지 19 개를 편리하게 묶어 놓은 것처럼 보인다. 그게 당신을 위해 작동하지 않습니다/어떤 문제를 해결하려고합니까? –

답변

1

testdata로 :

bigArr = [[x,x+1,x+2,x+3] for x in range(1,1000,4) ] # 250 subLists 
가장 쉬운

아마 itertools에서 islice() 것 :

print(list(itertools.islice(bigArr,5,10)))) # start 5, stop 10, implicit 1 step 

도쿠 : islice() 목록을 소요하는 start 값, stop 값과 stepper - 원 라이너로 원하는 것을 수행합니다. 당신은 또한 요소에 대한 슬라이딩 Trueitertools.compress을 활용할 수


은 당신이 원하는 :

# only show 5 to 10th (excluded) element: 
varParts = itertools.compress(bigArr, # first list 
      [1 if x in range(5,10) else 0 for x in range(len(bigArr))]) # second list 

# consume iterator: 
print(list(varParts)) 

Compress에만 두 번째 목록에 True로 평가 첫 번째 목록에서 값을 반환 - 두 번째 목록을 원하는 요소 만 평가하는 방식으로 구축됩니다. True

도쿠 : compress

,

또는 할 모든 큰이 같은 배열 슬라이스를 사용하여 손으로이 같은

def get_batch_data(i, arr, batchSize): 
    return arr[i:min(len(arr),i+batchSize)] 

사용 :

for i in range(0,len(bigArr),5): 
    print(get_batch_data(i,bigArr,5)) # creates sub-slices - wich take memory 
+0

굉장하고 완전한 대답. 감사합니다! –