擅长:python、mysql、java
<p>通过选择使用<code>np.piecewise</code>,您只需将成本斜率间隔指定为<code>condlist</code>,并将相应的线性函数表达式指定为<code>funclist</code>,如:</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt
x = np.array([-200,-100,0,100,200,300])
condlist = [x<-200,\
np.logical_and(x>=-200, x<0),\
x==0,\
np.logical_and(x>0,x<=200),\
x>200]
funclist = [lambda x: 200*60+abs(x+200)*10,\
lambda x: abs(x)*60,\
lambda x:0,\
lambda x: abs(x)*1,\
lambda x: 200*1+abs(x-200)*10]
f = np.piecewise(x,condlist,funclist)
</code></pre>
<p>使用给定点验证实现的正确性,如下所示:</p>
<pre><code>np.allclose([12000,6000,0,100,200,1200],f)
>>> True
</code></pre>
<p>它在更大范围内绘制,比如说<code>x = np.linspace(-500,500,2000)</code>,最后给出:</p>
<pre><code>plt.plot(x, f,'r')
plt.scatter([-200,-100,0,100,200,300],[12000,6000,0,100,200,1200],s=20,zorder=5)
</code></pre>
<p><a href="https://i.stack.imgur.com/6QHIX.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6QHIX.png" alt="piecewise_output"/></a></p>
<p>希望这有帮助</p>