【问题标题】:How to fix numpy.random.choice output nested inside a for loop when importing from python file?从python文件导入时,如何修复嵌套在for循环中的numpy.random.choice输出?
【发布时间】:2019-12-31 00:37:19
【问题描述】:

问题

我正在尝试生成多个不同长度的随机数列表。在长度为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

我不确定函数的编写方式是否存在根本错误/可改进之处,或者是否存在导入问题。

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

    我重新启动了 Jupyter 内核,以便对 python 文件代码所做的必要更改现在反映在导入时。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 2016-10-16
      • 2017-08-26
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多