簡體   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