2017-10-13 4 views
-3

私は誰かが私が持っている問題についていくつかの光を当てることを望んでいました。私は、変数の単一の配列があります助けが必要です一般的な変数に基づいて配列を分けるnumpyアルゴリズム

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

をそして私はあなたがそれを呼ぶだろうどんな公倍数/分母/によってそれらを分割する方法を見つけ出すしたいと思います...一般的な変数は、このための13であると言います配列、およびIは、たとえば、結果は変数のn数になりたい:

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

そのような何かを行うことができますアルゴリズムはありますか?

答えて

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() 
1

私はあなたの質問を理解する方法に最も近い数字は、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]} 
関連する問題