2017-09-29 3 views
0

이 나는 ​​범위의 문제를 벗어나 려하고 있음을 여기에 문제를 찾을 수 없습니다 :지수 (IndexError : 범위를 벗어난리스트 인덱스)

layerZ = [layer_1,layer_2,layer_3,layer_4,layer_5,layer_6,layer_7,layer_8,layer_9,layer_10,layer_11,layer_12,layer_13] 
    for x in range(0, 12): 
     layerZ_total = [np.size(layerZ[x])] 
     layerZ_sp = [np.count_nonzero(layerZ[x]==0)] 
     layerZ_nonSp = [np.count_nonzero(layerZ[x])] 

     #Printing the results on scree to trace 
     print "Layer:",x+1,"Threshhold:",repr(ths),"Total Parameters: ",layerZ_totParam[x],"# Sp: ",layerZ_sp[x],"# Remained : ",layerZ_nonSp[x],"Sp %: ",float(layerZ_sp[x])/layerZ_total[x] 
+1

'layerZ_total','lazerZ_sp' 및'layerZ_nonSp'리스트는 모두 길이가 1입니다. 그 때문에 그것들은'0' 이외의 인덱스를 가질 수는 없지만'x'를 사용하여 인덱스를 생성합니다. –

+0

Ahh, thanks @MartijnPieters. 나는 그때 모두'layerZ_total [x] = ...'를 사용해야한다. 권리? – Amir

+3

나는 당신의 코드가 무엇을 해야하는지 전혀 모른다. 내가 할 수있는 것은 오류의 원인을 지적하는 것이다. –

답변

1

이는 데 도움이 될 것입니다

코드에서
layerZ = [layer_1,layer_2,layer_3,layer_4,layer_5,layer_6,layer_7,layer_8,layer_9,layer_10,layer_11,layer_12,layer_13] 

layerZ_total = [] 
layerZ_sp = [] 
layerZ_nonSp = [] 


for x in range(0, 12): 
    layerZ_total.append(np.size(layerZ[x])) 
    layerZ_sp.append(np.count_nonzero(layerZ[x]==0)) 
    layerZ_nonSp.append(np.count_nonzero(layerZ[x])) 

    #Printing the results on scree to trace 
    print "Layer:",x+1,"Threshhold:",repr(ths),"Total Parameters: ",layerZ_total[x],"# Sp: ",layerZ_sp[x],"# Remained : ",layerZ_nonSp[x],"Sp %: ",float(layerZ_sp[x])/layerZ_total[x] 

, 일부 x index에 접근하려 할 때, 따라서 그 안에서 index 0에 하나 개의 요소를 포함 layerZ_total, layerZ_splayerZ_nonSp 루프 내부에 단일 값 매번 다시 초기화 된 목록, list index out of range 오류가 발생했습니다.

그리고 당신은 모든 layer_*layerZ 목록에 처리를 수행하는 경우 (요구 사항에 따라)는, 당신은 당신의 layerZ 목록

에 따라서 모든 layer을 처리 0 12에 값에 걸립니다이 x을하고 이후로 range(0, 13) 필요
관련 문제