【发布时间】:2020-06-09 18:35:15
【问题描述】:
我不确定我是否以正确的方式问这个问题,但这里是:
假设我想创建一个包含 20 个非零整数元素的 python 列表,并且这些元素的总和必须为 87。
我怎样才能确保选择的整数最小化整个列表的标准偏差(不确定这是正确的指标)。
以下代码示例有效,但我认为必须有更好的方法来做到这一点
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
【问题讨论】:
-
你的结果是什么?我在脑海中创建了
x = pd.DataFrame(np.array([4]*13+[5]*7)) x.sum() x.describe()