如何修复numpy.random.choice选项从python文件导入时,输出嵌套在for循环中?

2024-09-28 17:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我试图生成多个不同长度的随机数列表。在长度为num_basketsfor循环中,我使用np.random.choice为每个连续列表的长度n生成一个数字。然后,再次np.random.choice生成长度为n的随机数列表。你知道吗

预期产量

长度num_baskets的列表,列表中的每一项都是另一个随机长度n的列表。你知道吗

电流输出: 长度num_baskets但子列表长度一致的列表。但是,每次运行函数时,每次调用的子列表长度都是不同的(但仍然是一致的)。你知道吗

我尝试过的:

当我从python文件导入函数时,(例如from python_file import create_baskets与预期输出有偏差。尽管在每个循环中重新定义了n,但所有输出列表的长度都相同。你知道吗

然而,当我复制粘贴函数并在jupyter笔记本中定义它时,我得到了不同列表长度的预期输出。你知道吗

我的代码

import numpy as np

def create_baskets(num_baskets, max_basket_size, unique_items):
    """
    Create list of baskets of variable length >= 3

    Parameters
    ----------
    num_baskets: 
        number of baskets (sub-lists)
    max_basket_size: maximum basket size
        Baskets will be of size range(3, max_basket_size)
    unique_items:
        number of unique items

    Returns
    -------
    ret: list of "baskets", of randomly generated length
    """
    baskets = []
    for i in range(num_baskets):
        n = np.random.choice(range(3, max_basket_size), 1)
        basket = np.random.choice(range(0, unique_items), n, replace=False)
        baskets.append(basket)
    return baskets

我不确定函数的编写方式是否存在根本错误/可改进的地方,或者导入是否有问题。你知道吗


Tags: of函数列表forsizenpitemsrange
1条回答
网友
1楼 · 发布于 2024-09-28 17:19:06

我重新启动了Jupyter内核,以便对python文件代码所做的必要更改现在反映在import上。你知道吗

尽管在笔记本中多次重新导入模块,但Jupyter没有更新对python文件所做的更改并保存在我的文本编辑器中,这是一个问题。你知道吗

相关问题 更多 >