Список фиксированной длины, который суммируется с числом, но минимизирует стандартное отклонение - PullRequest
1 голос
/ 26 февраля 2020

Я не уверен, правильно ли я задаю этот вопрос, но вот так:

Скажем, я хочу создать список python с 20 ненулевыми целочисленными элементами, и эти элементы должны сложиться до 87 .

Как я могу go сделать так, чтобы выбранные целые числа минимизировали стандартное отклонение списка в целом (не уверен, что это правильная метрика c).

Следующий пример кода работает, но я думаю, что должен быть лучший способ сделать это

import pandas as pd
import numpy as np
target = 87
target_length = 20

starter_series = pd.Series([1 for val in range(target_length)])
while True:
    current_sum = starter_series.sum()
    if current_sum==target:
        break
    if target - current_sum > 20:
        starter_series += 1
        continue
    else:
        to_be_added = target - current_sum
        index_points = np.random.choice(starter_series.index.to_list(), to_be_added, replace=False)
        starter_series.loc[index_points] += 1

1 Ответ

4 голосов
/ 26 февраля 2020

Этот простой код должен работать:

n = 20
s = 87
q,r = divmod(s,n)
l = [q+1]*r + [q]*(n-r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...