如何解决python中的“具有多个元素的数组的真值不明确”
这就是我为函数获得两个数组(数组1和array2)的方式:
x = np.arange(-5,5,0.01)
prob=stats.norm.pdf(x,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()
解决方法
欢迎您!问题似乎是此行: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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。