我试图使用matplotlib和python绘制两个函数func1和func2。我一直在为以下代码获取ValueError,并且不知道出了什么问题。我搜索过相关问题,试了很多东西,似乎没什么用。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
plt.xlim(0, 10)
plt.ylim(0, 10)
plt.xlabel('$X$')
plt.ylabel('$Outputs$')
plt.title('Title')
x = np.arange(0, 10, .1)
def func1(X):
output = max(3*X/7 - 3/7, 0, 12*X/35 - 3/35)
return output
def func2(X):
output = max(3*X/7 - 3/7, 0)
return output
plt.plot(x, func1(x), 'g')
plt.plot(x , func2(x), 'b')
plt.show()
答案 0 :(得分:1)
max(2,3)
显然是3,因为3 > 2
。
但是当我们比较ndarray参数时,我们不会得到单个标量结果,而是一个数组:
In [23]: np.array([3,1]) > np.array([1,2])
Out[23]: array([ True, False], dtype=bool)
并且我们无法将一组bool转换为单个值 - 如果它是True,因为它至少有一个或False,因为它不是全部是真的吗?或者,正如错误消息所示,"具有多个元素的数组的真值是不明确的"。这意味着内置max
函数失败,因为它试图分析比较是否为真。
幸运的是,因为看起来你想要成对的最大值,numpy已经有了一个处理它的函数,np.maximum
。在代码中用max
替换内置np.maximum
会给我: