Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numpys interp right_Python_Arrays_Numpy_Interpolation - Fatal编程技术网

Python 使用numpys interp right

Python 使用numpys interp right,python,arrays,numpy,interpolation,Python,Arrays,Numpy,Interpolation,我有一个电阻列表(self.interp_数据[:,0])和相应的温度列表(self.interp_数据[:,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

我有一个电阻列表(self.interp_数据[:,0])和相应的温度列表(self.interp_数据[:,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] )
def计算(自身、V_输出、V_g、R_参考):
R_T=np.array([(V_g*R_ref/V_out)-R_ref])
印刷品
打印类型(自身内部数据[0,0])
打印类型(自身内部数据[0,1])
右打印对分(self.interp_数据[:,0],R_T)
打印自对话数据[:,0]
结果是:

[ 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.]
[22549.01960784]
211
假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假
假假假假假假假假假假假假假假假假
假假假假假假假假假假假假假假假假
假假假假假假假假假假假假假假假假
假假假假假假假假假假假假假假假假
假假假假假假假假假假假假假假假假
假假假假假假假假真
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真的真的真的真的真的真的真的
真实真实]
[ 150.]
此列表包含211个元素,最后一个元素的值为150。所以bisect和interp都同意R_T小于列表中最小的电阻值


但这种比较揭示出,它介于两者之间,我也同意这一点。如何正确使用interp获得与测量电阻对应的温度?

问题在于
xp
输入的
np.interp(x,xp,fp)
必须进行排序。考虑到这一点,您的示例应该能够做到:

a = self.interp_data[:,0]
b = self.interp_data[:,1]

argsa = np.argsort(a)
xp = np.take(a, argsa)
fp = np.take(b, argsa)
np.interp(R_T, xp, fp)

要使其正常工作,必须对self.interp_数据[:,0]
进行排序…您是对的。该数组具有降序数组。现在它工作了。如果你把它作为一个答案贴出来,我会接受。如果投票人能让我发表评论,那会更有建设性。。。这种方法有什么问题?