python - numpy.random.choice 如何与替换一起使用?

标签 python python-3.x numpy

任务是随机选择 1000 个客户。在数据集中,行数和唯一 ID 相同。

我随机选择,然后尝试选择具有所选 ID 的数据集:

from numpy.random import choice
ids = choice(df.id, 1000)
df[df.id.isin(ids)]

结果完全不同:df[df.id.isin(ids)] 的大小等于 917。为什么没有 1000 行?

最佳答案

默认为np.random.choice()是通过替换进行采样,replace=True

鉴于样本大小为 1000,生成的样本中很可能会有一些重复。

例如

>>> import pandas as pd                                                                                                                                      
>>> import numpy as np                                                                                                                                       
>>> np.random.seed(444)                                                                                                                                      
>>> s = pd.Series(list(range(1000)))                                                                                                                         
>>> ids = np.random.choice(s, 1000)                                                                                                                          
>>> s[s.isin(ids)].count()                                                                                                                                   
623
>>> ids_no_rep = np.random.choice(s, 1000, replace=False)                                                                                                    
>>> s[s.isin(ids_no_rep)].count()                                                                                                                            
1000

如果您想要做的是就地打乱该列的值,您可以为此调用 np.random.shuffle(df["col"].values)专栏。

关于python - numpy.random.choice 如何与替换一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58414272/

相关文章:

python - 向重写方法添加关键字参数并使用 **kwarg

python-3.x - 与 aiohttp 应用程序内的 Redis(aioredis) 失去连接

Python/Numba - 自定义类对象作为输入类型

python - 我该如何过滤日期

python - 检测生成器函数是否为空,否则迭代它

python - 类型错误 : Cannot interpret '4' as a data type

python - Numpy 数组替代 for 循环

python - 查找并替换 POM 中两个单词之间的内容

python - 为什么输出不是 1 和 1?

python - Django:使用 L10N 将 DateTimeField 转换为字符串