-1

我想使用 NumPy 在闭区间 [0,1] 之间随机生成不同的数字。np.random.uniform(0,1) 给了我完全相同的数字,但这不是我想要的。我预计频率列中有 0.606、0.278、0.981、0.699 这些随机数。np.random.randn(0,1) 给我一个错误。

有任何想法吗?提前致谢!

```
df = pd.DataFrame ({
'isRetention': ['T']* 28017 + ['F']* 31037,
'Frequency': np.random.uniform(0, 1)
 })
df



isRetention Frequency
0   T   0.60612
1   T   0.60612
2   T   0.60612
3   T   0.60612
4   T   0.60612
... ... ...
59049   F   0.60612
59050   F   0.60612
59051   F   0.60612
59052   F   0.60612
59053   F   0.60612
```
4

2 回答 2

1

您不应该isRetention是 True/False 而不是 T/F 字符吗?

无论如何,您在整个数据帧上广播了一个随机值。试试这个:

isRetention = ['T']* 28017 + ['F']* 31037
df = pd.DataFrame({
    'isRetention': isRetention,
    'Frequency': np.random.uniform(0,1, len(isRetention))
})
于 2020-06-20T17:39:34.097 回答
0

那是因为你np.random.uniform(0, 1)只调用了一次,所以 d['Frecency'] 将被唯一的值填充。你可以试试这个:

df = pd.DataFrame ({
'isRetention': ['T']* 28017 + ['F']* 31037,
'Frequency': np.random.uniform(0, 1,28017+31037)
 })


print(df)

输出:

      isRetention  Frequency
0               T   0.665864
1               T   0.646582
2               T   0.984343
3               T   0.662025
4               T   0.866976
          ...        ...
59049           F   0.261724
59050           F   0.882630
59051           F   0.422858
59052           F   0.515343
59053           F   0.366749
于 2020-06-20T17:38:52.877 回答