给定以下数组: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
提交
取消
