python - 如何在 numpy.piecewise 中指定范围(每个范围 2 个条件)

标签 python numpy piecewise

我正在尝试为一些数字信号处理构造一个分段函数,但我无法获得 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/

相关文章:

python - 显示正在运行的 Python 应用程序的堆栈跟踪

python - 从位于网站的图表中解析表格项时遇到问题

python - 如何像 Python numpy.fft.rfft 中那样在 cv::dft 中指定 FFT 长度

python - 提取包含另一个数组元素的端点数组行的矢量化方法

python - 如何防止 Selenium 在每个函数后关闭浏览器?

python - 梯度下降实现——绝对误差问题

python - 如何检查一个数组是否在Python中的另一个数组中

r - 直线和水平线在断点处连接的分段回归

matlab - 在面上插值分段常数的二维数据

c++ - 为什么没有分段元组构造?