"The truth value of an array with more than one element is ambiguous" 在蟒蛇中



这就是我为函数获得两个数组(数组1和数组2(的方法

x = np.arange(-5, 5,0.01)
prob=stats.norm.pdf(x,0,1)
prob_array=numpy.array(prob).reshape(1000,1) #array1
x_tran=m.transpose()
x_tran_array=array(x_tran)
mu_array=array(mu)           # mu is stock return 
mu_array1=numpy.array(mu_array).reshape(54966,1)
sigma_array=array(sigma)     #sigma is the historical volatility
sigma_array1=numpy.array(sigma_array).reshape(54966,1)
mu1_mat=mat(ones((1,1000)))  #for matrix calculation
original_x=mu_array1*mu1_mat+sigma_array1*x_tran_array #array2

我定义了一个函数:

def TK_value(z,p):
if z >= 0:
utility=z**0.88
prob=(p**0.61)/(p**0.61+(1-p)**0.61)**(1/0.61)
else:
utility= -2.25*(-z)**0.88
prob=(p**0.69)/(p**0.69+(1-p)**0.69)**(1/0.69)
return utility*prob

tks=TK_value(original_x,prob_array)

我有两个数组,original_x的形状为((549661000(形状为(1000,1(的prob_array。我想在这个函数中使用original_x作为z,使用prob_array作为p。

但错误是:

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

欢迎来到SO!问题似乎出在这一行:if z >= 0:如果使用'>'/'<'运算符,它将返回以下内容:

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> a > 2
array([False, False,  True])

默认情况下,此数组不能转换为bool,必须更具体,例如,使用any((测试是否至少有一个元素符合给定条件。Numpy数组可以这样做:https://numpy.org/doc/stable/reference/generated/numpy.ndarray.any.html.

相关内容

最新更新