Splitting Numpy array based on value

后端 未结 6 1938
我寻月下人不归
我寻月下人不归 2020-12-17 19:05

Suppose I have this NumPy array:

a = np.array([0, 3, 5, 5, 0, 10, 14, 15, 56, 0, 12, 23, 45, 23, 12, 45, 
              0, 1, 0, 2, 3, 4, 0, 0 ,0])
<         


        
6条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-17 19:46

    You can get the indices of zeros with np.where:

    zeros = np.where(a == 0)[0]
    

    And iterate over every pair to slice the array:

    [a[i+1:j] for i, j in zip(zeros, zeros[1:]) if len(a[i+1:j])>0]
    
    Out[46]: 
    [array([3, 5]),
     array([10, 14, 15, 56]),
     array([12, 23, 45, 23, 12, 45]),
     array([1]),
     array([2, 3, 4])]
    

提交回复
热议问题