2017-07-18 59 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

相关问题