teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正と追加

2019/06/11 23:25

投稿

bsdfan
bsdfan

スコア4921

answer CHANGED
@@ -1,7 +1,19 @@
1
1
  計算したいのは累積和のようなので、以下の方法で計算できると思います。
2
2
  ```python
3
+ cumsum_car = np.cumsum(car, axis=0) - car
4
+
5
+ # 編集前のバージョン、難しく考え過ぎました
3
- cumsum_car = np.zeros_like(car)
6
+ # cumsum_car = np.zeros_like(car)
4
- cumsum_car[1:] = np.cumsum(car, axis=0)[:-1]
7
+ # cumsum_car[1:] = np.cumsum(car, axis=0)[:-1]
5
8
  ```
6
9
  `cumsum_car[x, y]`が、`np.sum(car[0:x, y])`に等しくなっています。
7
- なお、質問には任意のx, yとありますが、この場合はもとの`car`のインデックスとして有効な値の範囲のみとなります。
10
+ なお、質問には任意のx, yとありますが、この場合はもとの`car`のインデックスとして有効な値の範囲のみとなります。
11
+
12
+ `calcal`は以下のようになりますが、各arrayのshape次第ではもう少し簡単に出来ると思います。
13
+ ```python
14
+ def calcal(l1, t1):
15
+ return (-(1/Bet_A) * arr[l1, t1]
16
+ - (1/Bet_B) * arr[l1, t1]
17
+ + (1/Bet_B) * cumsum_car[l1, t1]
18
+ + car[l1, t1])
19
+ ```