Python 将类似条目分组
我有一个numpy阵列:Python 将类似条目分组,python,numpy,Python,Numpy,我有一个numpy阵列: 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,
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])
对相似值进行分组的最佳方法是什么(例如,差值不大于1000000)?
谢谢你的回答 作为注释中链接的解决方案的替代方案,类似这样的解决方案应该可行:
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])]
作为注释中链接的解决方案的替代方案,类似这样的方法应该有效:
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])]
结果应该是什么样的?您需要一组还是多组?如果有多个可以相交?事实上,我没看到。非常感谢我一直在寻找的…结果应该是什么样的?您需要一组还是多组?如果有多个可以相交?事实上,我没看到。谢谢你,正是我想要的。。。