使用numpy interp吧

时间:2014-09-07 23:22:15

标签: python arrays numpy interpolation

我有一个带阻力的列表(self.interp_data [:,0])和相应的温度(self.interp_data [:,1])。我想用numpy中的interp函数来确定我测得的阻力的温度。这是我的功能:

def calc_T(self, V_out, V_g, R_ref):
    R_T = np.array([(V_g * R_ref/ V_out) - R_ref])
    print R_T
    print type( self.interp_data[0,0])
    print type( self.interp_data[0,1])
    print bisect_right(self.interp_data[:,0], R_T)
    print self.interp_data[:,0] < R_T
    return np.interp(R_T, self.interp_data[:,0],self.interp_data[:,1] )

结果如下:

[ 22549.01960784]
<type 'numpy.float64'>
<type 'numpy.float64'>
211
[False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True]
[ 150.]

此列表包含211个元素,最后一个元素的值为150.因此,bisect和interp都同意R_T小于列表中的最小电阻值。

但比较高调它介于两者之间,我同意。如何正确使用interp来获得与我测量的电阻相对应的温度?

1 个答案:

答案 0 :(得分:3)

问题是必须对xp的{​​{1}}输入进行排序。考虑到这一点,您的示例应该正常工作:

np.interp(x, xp, fp)