【发布时间】:2020-08-11 16:15:05
【问题描述】:
这就是我为我的函数获得两个数组(数组 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 形状的数组((54966, 1000) 和形状为 (1000,1) 的 prob_array。我想在这个函数中使用 original_x 作为 z 和 prob_array 作为 p。
但错误是:
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
【问题讨论】:
-
z是一个数组吗? -
你是如何调用函数的,你向
z提供了什么数据,你确定你真的提供了你认为的数据吗?错误似乎是为了比较if z>=0:而显然此时z是一个包含多个元素的数组。 -
您应该将完整的错误消息粘贴到它所引用的代码行中,但我怀疑问题出在
if z>=0:行中。-2.25(-z)位也会出现问题(浮点数不可调用),因为您可能错过了预期的*运算符。 -
@nancyyin 你在使用 Numpy,不是吗?如果是,则应在问题中提及(并标记为这样)。