[英]The truth value of an array with more than one element is ambiguous Python error
[英]“The truth value of an array with more than one element is ambiguous” in python
这就是我为我的 function 获得两个 arrays(数组 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
我定义了一个 function:
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)
我有两个 arrays,original_x 的形状((54966, 1000)和 prob_array 的形状(1000,1)。我想在这个 function 中使用 original_x 作为 z 和 prob_array 作为 p。
但错误是:
ValueError:具有多个元素的数组的真值不明确。 使用 a.any() 或 a.all()
欢迎来到 SO:问题似乎出在这一行: if z >= 0:
如果您在数组上使用 '>'/'<' 运算符,它将返回以下内容:
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> a > 2
array([False, False, True])
默认情况下,此数组无法转换为 bool,您必须更具体,例如使用 any() 来测试是否至少一个元素属于给定条件。 Numpy arrays can do it like this: https://numpy.org/doc/stable/reference/generated/numpy.ndarray.any.html .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.