Python错误:无法将输入数组从形状(20,10)广播到形状(10)

2024-04-26 02:55:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码并得到此错误: S[i+1,:]=(S[i,:]+np.cumsum公司(np.sqrt公司(dt)np.random.随机(nsims),轴=0))+ε加np.随机.泊松(λ加上(M,nsims))

ValueError:无法将输入数组从形状(20,10)广播到形状(10)

sigma = 0.1
dt = 0.05
lambda_plus = 2
lambda_minus = 2
M = 20 #number of steps
epsilon_plus = 1.0/2
epsilon_minus = 1.0/2   
T = 1
nsims = 10
s = 100
S = s*np.ones((M,nsims))

def price(lambda_plus, lambda_minus, M, T, dt, nsims):
    for i in range(M-1):
        S[i+1,:]  = (S[i,:] + np.cumsum(np.sqrt(dt)*np.random.randn(nsims),axis=0)) + epsilon_plus*np.random.poisson(lambda_plus,(M,nsims))
    return S

当我加上epsilon加上*np.随机.泊松(λ加上(M,nsims))。如何将此部分添加到S?你知道吗


Tags: lambda代码错误npdt公司plusrandom
1条回答
网友
1楼 · 发布于 2024-04-26 02:55:52

问题是这个表达式:

S[t-1] + sigma*math.sqrt(dt)*A + epsilon_plus*B-epsilon_minus*C

添加sigma*math.sqrt(dt)*Aepsilon_plus*Bepsilon_minus*C的所有三个术语都具有形状(201,),添加到S[t-1]后的结果也具有形状S[t],但您试图将其分配给具有形状(1,)S[t]。你知道吗

您需要解释一下您希望在S[t]中存储什么,以便我提供一个解决方案—我不想从您的代码中逆向工程/猜测意图。你知道吗

相关问题 更多 >