如何在使用Python的numpy随机选择时指定随机种子?

时间:2018-10-25 14:24:41

标签: python-3.x pandas numpy random

我有四个字符串的列表。然后在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]

2 个答案:

答案 0 :(得分:6)

您需要在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

答案 1 :(得分:3)

文档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