【问题标题】:group similar entries python [duplicate]将类似条目分组python [重复]
【发布时间】:2013-02-10 20:51:22
【问题描述】:

我有一个 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,
     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)? 谢谢解答!!

【问题讨论】:

  • 结果应该是什么样子?您需要一组还是多组?如果有多个,它们可以相交吗?
  • 确实,没看到。正是我正在寻找的东西......

标签: python numpy


【解决方案1】:

作为 cmets 中链接的解决方案的替代方案,应该可以使用以下方法:

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])]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多