<p>假设您的函数除了power操作符<code>**</code>之外是正确的,那么<code>numpy</code>的可能实现如下所示</p>
<pre><code># import math # does not work well with numpy
import numpy as np
def f(l,a,u,o1,o2): # change 'λ' to 'l' (it's easier to type)
o = np.where(l <= u, o1, o2) # vectorize piecewise definition
return a*np.exp((l-u)**2/(-2*o**2)) # change '^' to '**' operator, use np.exp
x = np.arange(4000,8000,1000) # define value range
print(f(x,1.056,5998,379,310)) # call your function one time with entire range
</code></pre>
<p>输出</p>
<pre><code>[9.74560013e-07 3.29586202e-02 1.05597802e+00 5.68878883e-03]
</code></pre>
<p>要重用函数,可以将其更改为参数化版本</p>
<pre><code>import numpy as np
def f(a,u,o1,o2):
return lambda x: a*np.exp((x-u)**2/(-2*np.where(x <= u, o1, o2)**2))
x = np.arange(4000,8000,1000)
f_p = f(1.056,5998,379,310) # parameterize your function
print(f_p(x)) # call the parameterized function with your value range
</code></pre>
<p>输出</p>
<pre><code>[9.74560013e-07 3.29586202e-02 1.05597802e+00 5.68878883e-03]
</code></pre>