我正在尝试为一些数字信号处理构造一个分段函数,但我无法获得 numpy.piecewise 以允许我指定一个范围。
这里是我要输入的内容:
t = np.arange(-10,10,1)
x = lambda x: x**3
fx = np.piecewise(t, [t < -1 and t>-2, t <= 0 and t>-1, t>=0 and t<1,t>1 and t<2], [x(t + 2), x(-t),x(t),-x(2-t)])
plot(t,fx)
但是,我收到错误:“ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()”
剖析该函数后,问题似乎在于该函数不允许 2 个条件合二为一,例如:
t < -1 and t>-2
但在我看来,允许指定范围对于许多分段函数来说都是必不可少的。有办法实现吗?
谢谢!
最佳答案
这是因为您不能在 numpy 数组上使用 and。对于 numpy bool 数组,您需要将 and
替换为 *
并将 or
替换为 +
。 (不要忘记添加括号)。
关于python - 如何在 numpy.piecewise 中指定范围(每个范围 2 个条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972433/