這可能是通過 pandas 中的滾動函式來完成的,不確定但我想將以下函式應用于串列,位置 x 中的當前狀態 S 定義為
S[x] = 如果 S[x-1] > 0 S[x-1] -1 S[x] 否則 S[x] -1 對于 x > 1
可以理解為當前狀態-1和當前狀態...這是因為我需要做一種之前所有位置-1 當前位置的累加和。
串列示例
[1,1,2,0,0,2]
回傳此值
[0,0,1,0,-1,1]
因為:
S[0] = 1 - 1 = 0
S[1] = S[1] - 1 S[0] = 1 - 1 0 = 0
S[2] = S[2] - 1 S[1] = 2 - 1 0 = 1
S[3] = S[3] - 1 S[2] = 0 - 1 1 = 0
S[4] = S[4] - 1 S[3] = 0 - 1 0 = -1
S[5] = S[5] - 1(沒有 S[4],因為 else 規則小于 0)= 2 - 1 = 1
我很確定這可能可以在 pandas 中完成,但我也對我發送串列的標準 python 函式持開放態度(雖然更喜歡 pandas)。
一直在嘗試遞回,結果慘遭失敗。
uj5u.com熱心網友回復:
減 1 然后使用 cumsum
(s-1).cumsum()
0 0
1 0
2 1
3 0
4 -1
5 0
給你,修改解決方案以適應計算累積和的條件
np.where(((s.shift(1) - 1).cumsum()) > 0,
(s-1).cumsum(),
s-1)
[ 0, 0, 1, 0, -1, 1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/487717.html
上一篇:Java遞回問題
