gpt4 book ai didi

python - 将 bool 数组转换为递增数值数组的优雅方法是什么?

转载 作者:行者123 更新时间:2023-11-28 21:32:56 25 4
gpt4 key购买 nike

给定以下数组:

jump = array([[False, False,  True, False, False,  True]])

有什么优雅的方法可以将此数组映射到每次遇到“True”时加 +1 的数值数组?就像这样:

[0,0,1,1,1,2].

这确实有效:

cat = np.zeros([6,])

it = 0
for i in range(0,np.shape(jumps)[0]):
if jumps[i] == True:
it = it + 1
cat[i] = it

但是,此方法使用 for 循环,该循环因比(例如)矩阵计算慢而臭名昭著。有没有办法在没有 for 循环的情况下应用这个函数,例如以更优雅的方式?

最佳答案

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 的子类,因此可以通过这种方式对它们进行算术运算。

关于python - 将 bool 数组转换为递增数值数组的优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55476743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com