2017-05-05 1 views
2

배열을 취하고 그 배열의 데이터를 (quantile에 의해) 저장하고 사전을 채운 데이터로 채우려 고합니다. 생성 된 사전에서 나는 키가 bin 번호에 해당하고 값이 j 번째 및 (j + 1) 번째 bin 범위 내에있는 입력 배열의 데이터 목록이되도록합니다. 여기 사전 목록 채우기 - 중첩 루프는 한 번만 실행됩니까?

내 코드입니다 :

output = [] 
def binning(array1): 
    d1 = {} # empty dictionary to fill with lists of values 
    bin_edges = sp.stats.mstats.mquantiles(array1, prob=[0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875,1.00]) 
    j = 0 
    while j < len(bin_edges): 
     for i in range(0, len(array1)): 
      if float(array1[i]) > bin_edges[j] and float(array1[i]) <= bin_edges[j+1]: 
       output.append(array1[i])     

      d1["bin_number{0}".format(j)]= output 
     j+=1 
     return d1 

문제는 내부 루프가 한 번만 실행되므로 내가보고 싶은 것은 내가

d1 = {'bin_number0': [value1, value2, etc.]}. 

같은 출력을 얻고있다 :

d1 = {'bin_number0': [value1, value2, etc.],'bin_number1': [value3, value4, etc.],'bin_number2': [value5, value6, etc.]} 

... 등등, 8 개의 값 목록에 해당하는 8 개의 키가 있습니다.

내부 루프가 한 번만 실행되는 이유는 누구에게 말해 줄 수 있습니까 (j = 0)? 나는 여러 번 눈을봤을 때 신선한 쌍안경이 필요합니다.

답변

0

return d1은 while 루프에 들여 쓰기하면 안됩니다. 그것을 들여 쓰다가 한 번만 들여 쓰기하십시오. 이것이 코드가 한 번만 반복되는 이유입니다. 희망이 도움이 !!

관련 문제