如何用Matplotlib绘制分段函数?解决数组布尔判断报错问题
解决NumPy数组条件判断的ValueError问题(分段函数绘制)
你遇到的报错是因为直接对NumPy数组用if判断时,数组包含多个元素,Python无法确定整个数组的布尔值(是只要有一个元素满足就为True,还是全部满足?),所以抛出歧义错误。下面是几种可行的解决方法:
方法1:使用np.where(最简洁)
np.where可以针对数组每个元素做条件判断,直接生成对应结果数组:
import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y4 = np.where(x <= 0, 0, x) # 元素<=0时返回0,否则返回x对应值 plt.plot(x, y4) plt.show()
方法2:利用数组布尔索引赋值
先创建和x形状一致的全0数组,再给符合条件的位置赋值:
import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y4 = np.zeros_like(x) y4[x > 0] = x[x > 0] # 仅对x>0的元素赋值为x对应值 plt.plot(x, y4) plt.show()
方法3:遍历元素(不推荐,效率低)
如果习惯用循环逻辑,可以逐个遍历数组元素,最后转成NumPy数组:
import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y4 = [] for num in x: y4.append(0 if num <= 0 else num) y4 = np.array(y4) plt.plot(x, y4) plt.show()
内容的提问来源于stack exchange,提问作者roweduncan
相关产品推荐
相关产品推荐

