给定x时找到y

时间:2017-11-30 23:27:36

标签: python interpolation

我试图在给定的x处找到y的值。我在一个数组中找到一个文件的最大值(我正在分析多个文件)。 make for循环遍历每个文件。我希望找到我的y值,当我的x(MaxPL_IM3)被给出时,即使该值很可能不是我的数组中的值。

#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

这与变量类型或语法有关吗?

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试使用numpy float作为索引。您需要将MaxPL_IM3 [c]转换为此行的整数:

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)]