
解決方法
スライス機能を使って処理の条件分岐を行うには、numpyの条件式を使えば実現できます。
具体的には、以下のように書くことができます。
c1=1190000
c2=113000000
c3=1.66
h1=0.003
kf1=0.0034
kl1=0.004
x=1.2
for i in range(194, prd.shape[0]):
condition = prd[i-194, 1:]<=-1 # 条件を変数に格納する
prd[i, 1:][condition] += 2/(xnp.log(c1+c2/(0-prd[i-194, 1:condition.sum()+1])**c3))(h1*(24-prd[i-194, 1:condition.sum()+1])+(kf1+(kl1-kf1)(0+1)/(0-prd[i-194, 1:condition.sum()+1]))(prd[i-194, :condition.sum()]-2prd[i-194, 1:condition.sum()+1]+prd[i-194, 2:condition.sum()+2])/x) # 条件を満たす場合
prd[i, 1:][~condition] += 2/(xnp.log(c1))(h1(24-prd[i-194, 1:])+kl1*(prd[i-194, :condition.sum()]-2*prd[i-194, 1:]+prd[i-194, 2:])/x) # 条件を満たさない場合
具体的には、条件を変数に格納して、numpyの条件式を使って条件に応じて処理を分岐します。
また、スライス機能で配列の一部分を切り出す際には、インデックスを指定すると、インデックスから一定数分離れた部分までが切り出されます。
そのため、条件部分のインデックスから1を足した数を指定する必要があります。
以上のコードを実行することで、スライス機能を使って処理の条件分岐を行うことができます。

0 コメント