2017-07-18 5 views
1

"out_max"の各要素の位置を配列 "out_der"で検索しようとしています。私は "out_pos"と呼ばれる配列に各値の位置のインデックスを格納します。 「out_der」は400×300×60×27の配列であり、「out_max」は400×300×60の配列です。 「out_pos」も400x300x60の配列でなければなりません。私は "out_der"をリストに変換して.index()を使ってみましたが、それはうまくいきませんでした(リストには400要素しかないので)。配列値の位置を見つけようとするとインデックスエラーが発生する

INPUT:これが私の現在の試みです

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'は最初は空のリストなので、すべてのインデックスが範囲外です。あなたはたぶん 'append'をしたいと思うかもしれませんが、私はあなたがしていることを明確にしていません。 – roganjosh

+0

前のコメントに加えて、 'out_pos =' [len(out_der) 'として' out_pos'を初期化します。 – 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次元の長さのリストになります。

out_pos = np.zeros((400,300,60))を使用し、0に初期化された値のすべてと400x300x60アレイを作成します。

あなたがゼロではない配列の特定の値が必要な場合は、それを作成した後

out_pos.fill(value)

を使用することができます。

+0

@WalterBlairありがとう、それは私の心を完全に滑らせました。しかし、私はこのエラーが発生することを修正しました: '17 for i in range(0,400 * 300 * 60): ---> 18 out_pos [i] =(np.where(out_der == out_max [i])) ValueError:入力配列を形状(0)から形状(60)にブロードキャストできませんでした ' – Nat

関連する問題