python

时间:2016-06-07 11:36:50

标签: python function numpy plot

我有以下问题:我有两组数据(设置T和设置F)。以下功能:

x(T) = arctan(T-c0), A(x(T)) =  arctan(x(T) -c1),    
B(x(T)) =  arctan(x(T) -c2) 
and Y(x(t),F) = ((A(x(t)) - B(x(t)))/2 - A(x(t))arctan(F-c3) +  B(x(t))arctan(F-c4))
# where c0,c1,c2,c3,c4 are constants 

现在我要创建Y的曲面图。为此,我想将Y实现为python(numpy)函数,结果证明它非常复杂,因为Y将其他函数作为输入。

我的另一个想法是分别评估数据上的xBA,并将结果存储在numpy数组中。有了这些,我也可以获得函数Y的输出,但我不知道哪种方式更好,以便绘制数据,我真的想知道如何写Y作为python函数。

非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

绝对可以使用函数作为其他函数的输入参数。用例可能如下所示:

def plus_one(standard_input_parameter_like_int):
    return standard_input_parameter_like_int + 1

def apply_function(function_as_input, standard_input_parameter):
    return function_as_input(standard_input_parameter)

if(__name__ == '__main__'):
    print(apply_function(plus_one, 1))

我希望这有助于解决您的具体问题。

答案 1 :(得分:0)

  1.   

    [...]像def s(x,y,z,*args,*args2):这样的东西会产生一个   错误。

  2. 这是完全正常的(至少据我所知)每个函数只允许一个可变长度的非关键字参数列表(必须准确标记为* args)。因此,如果删除星号(*),您实际上应该能够正确运行。

    1. 关于您的初始问题,您可以执行以下操作:

      c = [0.2,-0.2,0,0,0,0]
      def x(T):
          return np.arctan(T-c[0])
      def A(xfunc,T):
          return np.arctan(xfunc(T) - c[1])
      def B(xfunc,T):
          return np.arctan(xfunc(T) - c[2])
      def Y(xfunc,Afunc,Bfunc,t,f):
          return (Afunc(xfunc,t) - Bfunc(xfunc,t))/2.0 - Afunc(xfunc,t) * np.arctan(f - c[3]) + Bfunc(xfunc,t)*np.arctan(f-c[4])
      
      _tSet = np.linspace(-1,1,20)
      _fSet = np.arange(-1,1,20)
      
      print Y(x,A,B,_tSet,_fSet)
      
    2. 正如您所看到的(可能已经根据您的评论进行了测试)您可以使用函数作为参数。只要你不使用任何' if'您的' -functions中的条件或其他非向量化函数应该已经向量化了顶级函数。