【问题标题】:How to specify a random seed while using Python's numpy random choice?如何在使用 Python 的 numpy 随机选择时指定随机种子?
【发布时间】:2019-03-30 04:59:10
【问题描述】:

我有一个包含四个字符串的列表。然后在 Pandas 数据框中,我想创建一个变量,从该列表中随机选择一个值并分配给每一行。我正在使用 numpy 的随机选择,但阅读他们的文档,没有种子选项。如何为随机分配指定随机种子,以便每次随机分配都相同?

service_code_options = ['899.59O', '12.42R', '13.59P', '204.68L']
df['SERVICE_CODE'] = [np.random.choice(service_code_options ) for i in df.index]

【问题讨论】:

    标签: python-3.x pandas numpy random


    【解决方案1】:

    你需要在numpy.random.seed之前定义它,也不需要列表理解,因为可以使用numpy.random.choice和参数size

    np.random.seed(123)
    
    df = pd.DataFrame({'a':range(10)})
    
    service_code_options = ['899.59O', '12.42R', '13.59P', '204.68L']
    df['SERVICE_CODE'] = np.random.choice(service_code_options, size=len(df))
    print (df)
       a SERVICE_CODE
    0  0       13.59P
    1  1       12.42R
    2  2       13.59P
    3  3       13.59P
    4  4      899.59O
    5  5       13.59P
    6  6       13.59P
    7  7       12.42R
    8  8      204.68L
    9  9       13.59P
    

    【讨论】:

    • 问题,“np.random.seed(123)”是否适用于以下所有调用 numpy.random 函数的代码。如果是这样,有没有办法终止它,并说,如果我想使用不同的种子制作另一个变量,我是否要声明另一个“np.random.seed(897)”来影响后续代码?
    • 在这里得到答案stackoverflow.com/questions/49966770/…。谢谢。
    • @KubiK888 - 很抱歉,我离线了。
    【解决方案2】:

    文档numpy.random.seed

    np.random.seed(this_is_my_seed)
    

    可以是整数或整数列表

    np.random.seed(300)
    

    或者

    np.random.seed([3, 1415])
    

    示例

    np.random.seed([3, 1415])
    
    service_code_options = ['899.59O', '12.42R', '13.59P', '204.68L']
    np.random.choice(service_code_options, 3)
    
    array(['899.59O', '204.68L', '13.59P'], dtype='<U7')
    

    请注意,我将3 传递给choice 函数以指定数组的大小。

    numpy.random.choice

    【讨论】:

    • 整数列表能做什么?在 n 次 random() 调用后使用第 n 个元素作为种子?
    • 除了提供不同的种子之外没有什么特别的
    • 是的,但是列表是按顺序解析的吗?
    • 不,整个列表只是为随机化提供起点的东西。
    猜你喜欢
    • 2013-03-27
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多