【问题标题】:Need help ID a numpy algorithm to separate an array based on common variable需要帮助 ID 一个 numpy 算法来根据公共变量分离数组
【发布时间】:2018-03-25 12:03:41
【问题描述】:

我希望有人能对我遇到的问题有所了解。我有一个变量数组:

[3,4,7,8,12,18,20,25,30,31,38,43,46,51,58,59]

我想弄清楚如何用一个公倍数/分母/不管你怎么称呼它来分割它们……假设这个数组的公变量是 13,我希望结果是 n变量个数,例如:

[4,30,43,56]
[7,20,46,59]
[12,25,38,51]

有没有算法可以做这样的事情?

【问题讨论】:

    标签: python arrays algorithm sorting numpy


    【解决方案1】:

    这应该可以解决您的问题。根据您的要求替换数组和数字。

    def run():
        given_array = [3,4,7,8,12,18,20,25,30,31,38,43,46,51,58,59]
        number = 13
    
        final_result = []
    
        for e in given_array:
            d = e
            intermediate_array = []
            for f in given_array:
                if e not in intermediate_array:
                    intermediate_array.append(e)
                d = d+number
                if d in given_array:
                    intermediate_array.append(d)
                    given_array.remove(d)
            if intermediate_array and len(intermediate_array) > 1:
                final_result.append(intermediate_array)
        print final_result
    
    
    if __name__ == '__main__':
        run()
    

    【讨论】:

      【解决方案2】:

      最接近我理解您的问题的是,这些数字应按除以 n 的余数分组。 (i%n)。

      input=[3,4,7,8,12,18,20,25,30,31,38,43,46,51,58,59]
      n=13
      
      result_dict = dict(zip(range(n),[[]]*n))
      for i in input:
          result_dict[i%n] = result_dict[i%n] + [i]
      
      {0: [],
       1: [],
       2: [],
       3: [3],
       4: [4, 30, 43],
       5: [18, 31],
       6: [58],
       7: [7, 20, 46, 59],
       8: [8],
       9: [],
       10: [],
       11: [],
       12: [12, 25, 38, 51]}
      

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        相关资源
        最近更新 更多