2017-11-30 3 views
0

与えられたxでyの値を見つけようとしています。私は1つのファイル(私は複数のファイルを分析している)の配列の最大値を見つける。すべてのファイルを繰り返し処理するforループを作成します。私はx(MaxPL_IM3)が与えられたときに私のy値を探したいのですが、その値は私の配列の値ではないでしょう。与えられたときにyを見つける

#lenght is the number of files being read 
#PL and IM3_hi are initialized at the beginning of the code since I 
#grab the data from external files 

IM3_value=[None]*length 
f=[None]*length 
#finds max in PL array for one file 
for c in range(0,length): 
    MaxPL_IM3[c]=max(PL[c]) 
MaxPL_IM3[:]=[x-3 for x in MaxPL_IM3] 

for c in range(0,length): 
    #PL[c] should be the array of data for one file 
    #IM3_hi[c] should be the array of data for one file 

    f[c]=interp1d(PL[c],IM3_hi[c]) #interpolate array vs array for 
    #one file 
    IM3_value[c]=f[MaxPL_IM3[c]] 
    print(IM3_value[c]) 

私はこれを実行すると、私はこれを取得:

Traceback (most recent call last): 
IM3_value[c]=f[MaxPL_IM3[c]] 
TypeError: list indices must be integers or slices, not numpy.float64 

これは、変数の型、または構文と関係があるのでしょうか?

答えて

0

numpy浮動小数点をインデックスとして使用しようとしているようです。私が代わりにこの方法を試してみました、私は変換メソッドをテストすることはできません

IM3_value[c]=f[MaxPL_IM3[c]] 

あなたPLの構造についての詳細がなければ、しかし、あなたは

IM3_value[c]=f[int(MaxPL_IM3[c])] 
# or 
IM3_value[c]=f[MaxPL_IM3[c].astype(numpy.int64)] 
+0

を試すことができます:あなたは、この行で整数にMaxPL_IM3 [C]を変換する必要があります:Hi [c] = np.interp(MaxPL_IM3 [c]、PL [c]、IM3_hi [c])それは働いた –

関連する問題