numpy - group similar entries python -
this question has reply here:
grouping / clustering numbers in python 3 answersi have numpy array:
array([ 2.86656000e+09, 2.86688000e+09, 2.86708000e+09, 2.86860000e+09, 2.86884000e+09, 2.86908000e+09, 2.86920000e+09, 2.87024000e+09, 2.87040000e+09, 2.87056000e+09, 2.87076000e+09, 2.87108000e+09, 2.87120000e+09, 2.87152000e+09, 2.87260000e+09, 2.87272000e+09, 2.87280000e+09, 2.87448000e+09, 2.87464000e+09, 2.87476000e+09, 2.87484000e+09]) what best way grouping similar values (difference not bigger 1000000 example)? answers!!
as alternative solution linked in comments, should work:
in [1]: import numpy np in [2]: arr = np.array([ 2.86656000e+09, 2.86688000e+09, 2.86708000e+09, ...: 2.86860000e+09, 2.86884000e+09, 2.86908000e+09, ...: 2.86920000e+09, 2.87024000e+09, 2.87040000e+09, ...: 2.87056000e+09, 2.87076000e+09, 2.87108000e+09, ...: 2.87120000e+09, 2.87152000e+09, 2.87260000e+09, ...: 2.87272000e+09, 2.87280000e+09, 2.87448000e+09, ...: 2.87464000e+09, 2.87476000e+09, 2.87484000e+09]) in [3]: np.split(arr, np.where(np.diff(arr) > 1000000)[0] + 1) out[3]: [array([ 2.86656000e+09, 2.86688000e+09, 2.86708000e+09]), array([ 2.86860000e+09, 2.86884000e+09, 2.86908000e+09, 2.86920000e+09]), array([ 2.87024000e+09, 2.87040000e+09, 2.87056000e+09, 2.87076000e+09, 2.87108000e+09, 2.87120000e+09, 2.87152000e+09]), array([ 2.87260000e+09, 2.87272000e+09, 2.87280000e+09]), array([ 2.87448000e+09, 2.87464000e+09, 2.87476000e+09, 2.87484000e+09])] python numpy
No comments:
Post a Comment