在python中绘制自定义函数

ale*_*lex 2 python numpy matplotlib

我想绘制一个自定义函数,包括minmax:

import numpy as np
import matplotlib.pyplot as plt

f = lambda x: max(0, x)
x = np.linspace(-10, 10)
y = f(x)

plt.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果:

ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()

欢迎提供一些帮助

Max*_*axU 5

使用矢量化np.clip()而不是f- 这样你可以在一个步骤中设置lower(a_min)和upper(a_max)边界:

y = np.clip(x, a_min=0, a_max=None)
Run Code Online (Sandbox Code Playgroud)

或尝试向量化你的标量函数:

In [146]: x = np.linspace(-1000, 1000, 10**6)

In [147]: x.shape
Out[147]: (1000000,)

In [148]: vf = np.vectorize(f)

In [149]: %timeit [f(i) for i in x]
1.46 s ± 5.42 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [150]: %timeit vf(x)
1.03 s ± 8.73 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Run Code Online (Sandbox Code Playgroud)