回答編集履歴
1
修正と追加
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
|
+
```
|