ale*_*lex 2 python numpy matplotlib
我想绘制一个自定义函数,包括min和max:
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()
欢迎提供一些帮助
使用矢量化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)
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |