給定以下數組:jump = array([[False, False, True, False, False, True]])將此數組映射到每次遇到“真”時增加 +1 的數值數組的優雅方法是什么?像這樣:[0,0,1,1,1,2].這確實有效:cat = np.zeros([6,])it = 0for i in range(0,np.shape(jumps)[0]): if jumps[i] == True: it = it + 1 cat[i] = it然而,此方法使用 for 循環,眾所周知,該循環比(例如)矩陣計算慢。有沒有辦法在沒有 for 循環的情況下以更優雅的方式應用此函數?
1 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
np.cumsum 這里似乎合適:
>>> import numpy as np
>>> np.cumsum([False, False, True, False, False, True])
array([0, 0, 1, 1, 1, 2], dtype=int32)
幸運的是 bool 是 int 的子類,因此以這種方式對它們進行算術運算是可能的。
添加回答
舉報
0/150
提交
取消