Существует ли решение numpy, которое позволило бы вам инициализировать массив на основе следующих условий?
- Количество элементов на оси 1. (В приведенном ниже примере у вас есть 4 места в каждый элемент массива)
- Сумма значений. (Сумма всех элементов равна 8)
- Размер шага. (Используя приращение 2)
По сути, это показывает все комбинации из 4 значений, которые вы можете добавить для достижения желаемой суммы (8) с размером шага 2.
Мои эксперименты терпит неудачу, когда я устанавливаю размер оси 1 больше 6, а сумму больше 100. Должен быть способ сделать это лучше, чем то, что я пытался.
array([[0, 0, 0, 8],
[0, 0, 2, 6],
[0, 0, 4, 4],
[0, 0, 6, 2],
[0, 0, 8, 0],
[0, 2, 0, 6],
[0, 2, 2, 4],
[0, 2, 4, 2],
[0, 2, 6, 0],
[0, 4, 0, 4],
[0, 4, 2, 2],
[0, 4, 4, 0],
[0, 6, 0, 2],
[0, 6, 2, 0],
[0, 8, 0, 0],
[2, 0, 0, 6],
[2, 0, 2, 4],
[2, 0, 4, 2],
[2, 0, 6, 0],
[2, 2, 0, 4],
[2, 2, 2, 2],
[2, 2, 4, 0],
[2, 4, 0, 2],
[2, 4, 2, 0],
[2, 6, 0, 0],
[4, 0, 0, 4],
[4, 0, 2, 2],
[4, 0, 4, 0],
[4, 2, 0, 2],
[4, 2, 2, 0],
[4, 4, 0, 0],
[6, 0, 0, 2],
[6, 0, 2, 0],
[6, 2, 0, 0],
[8, 0, 0, 0]], dtype=int64)