給定以下數(shù)組:jump = array([[False, False, True, False, False, True]])將此數(shù)組映射到每次遇到“真”時增加 +1 的數(shù)值數(shù)組的優(yōu)雅方法是什么?像這樣:[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 循環(huán),眾所周知,該循環(huán)比(例如)矩陣計算慢。有沒有辦法在沒有 for 循環(huán)的情況下以更優(yōu)雅的方式應用此函數(shù)?
1 回答

慕村9548890
TA貢獻1884條經(jīng)驗 獲得超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
提交
取消