繁体   English   中英

python 中的“具有多个元素的数组的真值不明确”

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM