【问题标题】:List of fixed length that sums to a number but minimizes standard deviation总和为一个数字但最小化标准偏差的固定长度列表
【发布时间】: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()

标签: python pandas list numpy


【解决方案1】:

这个简单的代码应该可以工作:

n = 20
s = 87
q,r = divmod(s,n)
l = [q+1]*r + [q]*(n-r)

【讨论】:

  • 太棒了,太棒了
猜你喜欢
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2014-04-27
  • 2012-12-03
  • 2021-09-27
  • 2021-10-16
  • 2019-12-11
  • 1970-01-01
相关资源
最近更新 更多