2017-07-18 58 views
1

我正試圖在數組「out_der」的「out_max」中找到每個元素的位置。我想將每個值的位置索引存儲在名爲「out_pos」的數組中。 「out_der」是400x300x60x27陣列,「out_max」是400x300x60陣列。 「out_pos」也應該是400x300x60陣列。我嘗試將「out_der」轉換爲列表並使用.index(),但那不起作用(因爲列表中只有400個元素)。這是我目前的嘗試:嘗試查找數組值的位置時發生索引錯誤

輸入:

out_max=[] 
    out_pos=[] 
    out_max=np.amax(out_der,axis=3) 

    for i in range(0,len(out_der)-1): 
     out_pos[i]=np.where(out_der==out_max[i])[0] 

但我得到這個錯誤:

OUTPUT:

 18 for i in range(0,len(out_der)-1): 
    ---> 19  out_pos[i]=np.where(out_der==out_max[i])[0] 

    IndexError: list assignment index out of range 
+1

'out_pos'在開始時是一個空列表,所以所有的索引都超出範圍。你可能想要「追加」,但我不確定我清楚你在做什麼。 – roganjosh

+0

除了之前的註釋:將'out_pos'初始化爲'out_pos = [[]] * len(out_der)''。 – DyZ

+0

換句話說,錯誤來自'out_pos [i] ='。這與numpy無關。 – roganjosh

回答

0

我想這是因爲你初始化1D需要初始化out_max和out_pos = np.empty((400,300,60))的數組)

0

你說

"out_pos" should also be a 400x300x60 array

,但你與

out_pos=[]宣佈它。

這使它成爲1維0長度列表。

要創建400x300x60陣列全部初始化爲0的值的,使用

out_pos = np.zeros((400,300,60))

如果你想不爲零的數組中的一個特定的值,你可以創建後使用

out_pos.fill(value)

+0

@WalterBlair謝謝你,我完全放棄了我的想法。但是,當我修復,我得到這個錯誤:'17我在範圍內(0,400 * 300 * 60): ---> 18 out_pos [i] =(np.where(out_der == out_max [i])) ValueError:無法將形狀(0)的輸入數組廣播成形(60)' – Nat

相關問題