需要帮助ID一个numpy算法来基于公共变量分离数组

时间:2017-10-13 11:03:46

标签: python arrays algorithm sorting numpy

我希望有人可以解决我遇到的问题。我有一个变量数组:

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

我想弄清楚如何通过一个共同的多个/分母/任何你称之为它的方式将它们拆分...说这个数组的公共变量是13,我希望结果为{{1变量数量,例如:

n

是否有算法可以做类似的事情?

2 个答案:

答案 0 :(得分:1)

最接近我理解你的问题的方法是,数字应按除以n的余数分组。 (ⅰ%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]}

答案 1 :(得分: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()