0

I have a 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 is the best way to group similar values (difference not bigger as 1000000 for example)? Thanks for answers!!

wa4557
  • 953
  • 3
  • 13
  • 25

1 Answers1

4

As an alternative to the solution linked in the comments, something like this should work:

In [1]: import numpy as 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])]
root
  • 76,608
  • 25
  • 108
  • 120