我有两个布尔指示器的布尔Numpy数组:
v v v
A = np.array([0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1], dtype=bool)
B = np.array([1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1], dtype=bool)
^ ^ ^
从左到右,我想分离第一个trueA
指示符,然后是下一个trueB
指示符,然后是下一个trueA
指示符,然后是下一个trueB
指示符,以此类推
v v v
>>>> A_result = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
B_result = [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1]
^ ^ ^
我觉得我可以创建一个betweenAB
数组,指示A==1
后面跟B==1
的所有位置:
v v v
betweenAB = [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1]
^ ^ ^
然后计算每次跑步的开始和结束指数,但对于Numpy,我仍然是一个初学者,不知道如何才能做到这一点
我正在寻找一种完全矢量化的方法,因为在我的应用程序中有数千个这样的数组,每个数组包含数千个元素。任何帮助都将不胜感激
使用Numpy很难有效地完成这一点(如果没有循环,可能无法有效地完成),但是使用Numba的JIT可以轻松有效地完成这一点。这主要是由于应用操作的顺序性
以下是Numba中的一个示例:
相关问题 更多 >
编程相关推荐