我有一个由 0 和 1 组成的 numpy 数组:
y=[1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1]
我想计算 1(或 0)组的索引。因此,对于上面的示例,一组的结果应该类似于:
result=[(0,2), (8,9), (16,19)]
(如何)我可以用 numpy 做到这一点吗?我没有发现像分组功能这样的东西。
我尝试过np.ediff1d https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.ediff1d.html,但一直没有找到好的解决办法。并不是说数组可能或可能不以一组开始/结束:
import numpy as np
y = [1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1]
mask = np.ediff1d(y)
starts = np.where(mask > 0)
ends = np.where(mask < 0)
我还在这里找到了部分解决方案:查找元素改变值的索引 numpy https://stackoverflow.com/questions/19125661/find-index-where-elements-change-value-numpy
但那个只给我值变化的索引。