Неравномерное соединение массивов python

У меня есть два массива:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

bits = ['bit1', 'bit2', 'bit3', 'bit4', 'bit5', 'bit6']

Я хочу, чтобы к каждому элементу bits присваивались значения из a, при этом как можно больше, но чтобы они распределялись равномерно.

Мой код:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

bots = ['bit1', 'bit2', 'bit3', 'bit4', 'bit5', 'bit6']

old_i = 0
for i, bot in enumerate(bots):
    new_i = int(len(a) / len(bots)) * (i + 1)
    print(bot, a[old_i:new_i])
    old_i = new_i

Пример:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

bits = ['bit1', 'bit2', 'bit3', 'bit4', 'bit5', 'bit6']

Вывод:

введите сюда описание изображения

В чем проблема: когда количество элементов в а не кратно bits, обрезается часть элементов из а.

Пример:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

bots = ['bit1', 'bit2', 'bit3', 'bit4', 'bit5', 'bit6']

Вывод:

введите сюда описание изображения

Нужно, чтобы в случае нечетности, некоторым значениям из bits присваивалось по 2 элемента, а некоторым по одному. Вот так:

bit1 [1, 2]
bit2 [3, 4]
bit3 [5, 6]
bit4 [7, 8]
bit5 [9, 10]
bit6 [11]

Ответы (1 шт):

Автор решения: strawdog
import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
bots = ['bit1', 'bit2', 'bit3', 'bit4', 'bit5', 'bit6']

res = np.array_split(a, divmod(len(a),len(bots))[1]+1)
print(res)

результат:

[array([1, 2]), array([3, 4]), array([5, 6]), array([7, 8]), array([ 9, 10]), array([11])]
→ Ссылка