【问题标题】:Python multiple valued parameters within function函数内的Python多值参数
【发布时间】:2021-06-03 08:25:15
【问题描述】:

我有在 Python 中生成少数游戏模型的代码。我正在为具有单个值的参数运行我的代码,例如N = 101,它工作正常,但我希望能够为同一参数的多个值运行它,例如N = 101,201,301。我不能只设置一个列表,因为我的代码有很多 numpy 数组,所以需要匹配我所有的数组等。 我现在已经将我的代码存储到一个函数中:

def mg_theory(N,time, S, M):
    # index to how we pick out a strategy
    index = 1 - 2 * np.random.rand(N, M, S)

    # allocating strategy randomly to all players for past m weeks
    # each strategy is different for all players, each number corresponds to a different strategy
    # some may have same strategy
    outcomes = np.random.rand(N, S)

    # guess randomly how many people are going for first m weeks
    history = np.random.randint(0, N, size=2 * M)
    history = np.reshape(history, (history.shape[0], 1))
....
etc 
(rest of code)

如您所见,我有 4 个参数,其中 2 个(N 和 M)我希望有多个值。 有人知道吗?

【问题讨论】:

    标签: python function modeling game-theory


    【解决方案1】:

    如果我理解正确,一种选择是使用here 所述的列表理解。

    对于您的示例,您可以使用以下方法运行您的函数:

    [mg_theory(N, time="something", S="something", M) for N in [1, 2, 3] for M in [4, 5, 6]]
    

    这会将您的输出存储为列表。

    我知道在您的问题中您说您的数据在 numpy 数组中,要使上述示例正常工作,您需要将 2 个硬编码列表更改为您的实际数据(我不知道您的数组结构是什么所以不能将它包含在我的答案中)。

    【讨论】:

    • 是的,马特感谢您的帮助,这非常有效,我的代码现在适用于所有值。此外,我想问一下如何将这些存储为所有值的列表,我的代码使用函数“tqdm”循环大约 200 次,它会覆盖以前的列表,关于我们如何获取这些值的任何想法?
    • 在 for 循环上方,您可以放置​​一个空列表 my_list = [],然后在循环结束时将输出添加到空列表中,my_list.append(some_data)my_list.extend(some_data)。两种方法的区别在here进行解释。
    猜你喜欢
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多