Python 错误:包含多个元素的数组的真值不明确

韦内米斯蒂尔

我知道为什么会出现这个错误。原因有据可查。而且我知道如何使用一些低效的代码来避免这个错误(请参阅问题的最后一点)。但我不知道如何编写有效的实现并避免此错误。

这是代码:

pdf_exp=lambda x,lam=1:lam*exp(-lam*x) if x>=0 else 0

def graph(funct, x_range):
    x=np.array(x_range)
    y=funct(x)
    plt.plot(x,y,'r--')
    plt.show()

graph(lambda x: pdf_exp(x), np.linspace(-10,10,10000))

当我运行这个时,我收到错误:

----> 3     y=funct(x)
----> 1 graph(lambda x: pdf_exp(x), np.linspace(0,10,10000))
----> 1 pdf_exp=lambda x,lam=1:lam*exp(-lam*x) if x>=0 else 0
ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all()

当我做出改变时

pdf_exp=lambda x,lam=1:lam*exp(-lam*x)

然后这运行没有错误,但情节不正确。但我真的需要在那里包含那一点代码。

如果我进行错误消息建议的更改,我会收到另一条错误消息或不正确的绘图。这个变化:

pdf_exp=lambda x,lam=1:lam*exp(-lam*x) if (x>=0).all() else 0

产生这个错误:

x and y must have same first dimension, but have shapes (10000,) and (1,)

这些变化中的任何一个

pdf_exp=lambda x,lam=1:lam*exp(-lam*x) if (x>=0).any() else 0
pdf_exp=lambda x,lam=1:lam*exp(-lam*x) if x.any()>=0 else 0

产生这个不正确的情节:

不正确的情节

此图不正确,因为 x<0 时 y 值应为零。这就是代码“if x>=0 else 0”的目的。

当然,我可以更改图形函数的实现以使其正常工作:

def graph(funct, x_range):
    y_range=[]
    for x in x_range:
        y_range.append(funct(x))
    plt.plot(x_range,y_range,'r--')
    plt.show()

但是让原始版本工作会很好,因为它似乎更有效。

存在的重要性欧内斯特

只需将你的表达式乘以 (x>=0)

pdf_exp = lambda x,lam=1: lam*exp(-lam*x)*(x>=0)

这是有效的,因为布尔数组在算术运算的上下文中仅被解释为 1 和 0。例如

x = np.array([-1,2,3,-3])
print(x>=0)               # [False  True  True False]
print(x*(x>=0))           # [0 2 3 0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有多个元素的数组的真值是不明确的。在python中使用a.any()或a.all()

Python:具有多个元素的数组的真值不明确。使用a.any()或a.all()

ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()python

Python heapq heappush一个具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()python dbscan 3维点

Python 3 Lambda错误:系列的真值不明确

Python 错误中的 For 循环:系列的真值不明确

NumPy错误:包含多个元素的数组的真值不明确。使用a.any()或a.all()

Yahtzee 代码错误:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()

为什么我会收到此错误“系列的真值不明确”python

Python OR Logic给出一个系列的真值是不明确的错误

无法删除数据帧 python 3 中的行。值错误:真值不明确

numpy:具有多个元素的数组的真值不明确

包含多个元素的数组的真值是不明确的。在 Model,fit() 中使用 a.any() 或 a.all()

LightGBM:ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

builtins.ValueError:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()

Python-numpy where子句-系列的真值不明确

在 python 中出错为“**系列的真值不明确”

Python Pandas ValueError:系列的真值不明确

Series 的真值不明确:value error python

如何解决错误:具有多个元素的数组的真值不明确

具有多个元素的数组的真值是不明确的。numpy错误

ValueError:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all() 进行元素比较

如果不是img == None:ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

ValueError:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all():Silhouette 性能算法

Matplotlib条形图错误:“具有多个元素的数组的真值不明确。请使用a.any()或a.all()”

GridSearchCV-错误:具有多个元素的数组的真值不明确。使用a.any()或a.all()

感知器逻辑 OR 值错误:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

具有多个元素的数组的真值是不明确的。使用a.any()或a.all()-Numpy库