我试图在给定的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
这与变量类型或语法有关吗?
答案 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)]