def Ftrapz(x):
global a2
if x<a:
a2=0
elif a<=x<=b:
a2=(0.5*k1*x**2+b1*x)-(0.5*k1*a**2+b1*a)
else:
a2=(0.5*k1*b**2+b1*b)-(0.5*k1*a**2+b1*a)
return a2
trapz_test=stats.kstest(x0,Ftrapz)
我想用stats.kstest测试测试自己定义的数组x0和分布函数。但是这个程序有一些错误,那么如何准确地使用可调用函数呢? 据说:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
方法} ,它获取一个范围列表和一个要在这些范围内执行的函数列表(它们可能是常量)。您的功能可以表示为:
kstest
将NumPy数组作为参数传递给Ftrapz。因此,在if语句中,x<a
是一个布尔数组,这导致了关于歧义的错误。解决方案不是使用all
或any
,而是重写函数以处理数组。一种典型的方法是使用^{注意,NumPy数组的比较不能像标量那样方便地嵌套:
a <= x <= b
会抛出错误。通过将相应的公式设为最后一个公式,可以避免混乱的logical_and
,以便在其他条件失败时执行:相关问题 更多 >
编程相关推荐