Python 使用matplotlib绘制逐段函数会导致ValueError:包含多个元素的数组的真值不明确
我想使用Python 使用matplotlib绘制逐段函数会导致ValueError:包含多个元素的数组的真值不明确,python,numpy,matplotlib,Python,Numpy,Matplotlib,我想使用matplotlib绘制分段函数: import numpy as np import matplotlib.pyplot as plt def pwf(x): return 0 if x < 0 else 1 x = np.linspace(-1, 1, 100) plt.plot(x, pwf(x)) 将numpy导入为np 将matplotlib.pyplot作为plt导入 def pwf(x): 如果x
matplotlib
绘制分段函数:
import numpy as np
import matplotlib.pyplot as plt
def pwf(x):
return 0 if x < 0 else 1
x = np.linspace(-1, 1, 100)
plt.plot(x, pwf(x))
将numpy导入为np
将matplotlib.pyplot作为plt导入
def pwf(x):
如果x<0,则返回0,否则返回1
x=np.linspace(-1,1100)
plt.绘图(x,pwf(x))
我得到以下错误:
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
但是,在使用(x<0).any()
时,我只得到True
,而在(x<0.all()
时,我得到False
,两者都不适合我的情况
我在这里找到了答案:,但是问题和答案都被不必要的代码塞得太多,所以我决定发布一个简洁的解决方案。一个简单的解决方案是使用Python的列表理解:
x = np.linspace(-1, 1, 100)
y = [pwf(x) for x in x]
plt.plot(x, y)
迈克·穆勒的回答要归功于他。你可以使用
def pwf(x):
return (x < 0).astype(float)
def pwf(x):
返回值(x<0)。aType(浮点)
或者,对于使用0和1以外的数字的解决方案
def pwf(x):
return np.array([1,0])[(x < 0).astype(int)]
def pwf(x):
返回np.array([1,0])[(x<0.astype(int)]
此类问题的一般解决方案是将函数矢量化:
import matplotlib.pyplot as plt
import numpy as np
def pwf(x):
return 0 if x < 0 else 1
x = np.linspace(-1, 1, 100)
plt.plot(x, np.vectorize(pwf)(x))
plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入
def pwf(x):
如果x<0,则返回0,否则返回1
x=np.linspace(-1,1100)
plt.plot(x,np.矢量化(pwf)(x))
plt.show()
将打印(x)
添加到pwf
。和打印(xrelated?: