gpt4 book ai didi

python - 在 numpy 中创建下一个有效 bool 值的索引数组

转载 作者:行者123 更新时间:2023-12-02 02:35:01 26 4
gpt4 key购买 nike

我有一个一维 numpy bool 数组,我的目标是获得一个相同维度的整数数组,其中每个条目都声明 bool 数组的下一个有效索引。这是一个例子:

import numpy as np
b=np.asarray((True, False, False, True, False),dtype=bool)
#It should be assigned such that in the end
#i=array([ 0, 3, 3, 3, -1])

是否有任何组合 numpy 函数可以在线性运行时且不使用循环的情况下实现此目的?

最佳答案

这是我能想到的一种方法:

import numpy as np
b = np.asarray((True, False, False, True, False), dtype=bool)
idx = np.r_[np.where(b)[0], -1]
res = idx[np.cumsum(np.r_[False, b[:-1]])]
print(res)
# [ 0 3 3 3 -1]

如果b非常大,您可以使用以下方式保存一个串联:

import numpy as np
b = np.asarray((True, False, False, True, False), dtype=bool)
idx = np.r_[np.where(b)[0], -1]
c = np.zeros(len(b), dtype=np.int32)
np.cumsum(b[:-1], out=c[1:])
res = idx[c]
print(res)
# [ 0 3 3 3 -1]

关于python - 在 numpy 中创建下一个有效 bool 值的索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64442097/

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