为了账号安全,请及时绑定邮箱和手机立即绑定

将布尔数组转换为递增数值数组的优雅方法是什么?

将布尔数组转换为递增数值数组的优雅方法是什么?

喵喵时光机 2021-12-26 14:17:48
给定以下数组: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 的子类,因此以这种方式对它们进行算术运算是可能的。


查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号