我试图随机生成数据。下面你可以看到我的例子
import numpy as np
import pandas as pd
import random
df_categories = pd.DataFrame(np.random.choice(a=["0", "1"], size=100, p=[0.7, 0.3]),
columns = ['number'])
df_categories此代码运行良好并生成数据。现在,我想更改这段代码,以便在某个范围内生成整数数据,而不是"1",以生成来自1 to 100的范围内的数据。
df_categories = pd.DataFrame(np.random.choice(a=[0, random.randint(0, 100)], size=100, p=[0.7, 0.3]),
columns = ['number'])
df_categories我尝试了上面的代码,但是这段代码在30%的字段中只生成一个值。所以,有人能帮我解决这个问题,产生不同的数字而不是一个数字吗?
发布于 2022-09-24 17:41:20
你为什么不使用numpy.random.randint和面罩呢?
# random integers
a = np.random.randint(0, 100, size=100)
# random mask for ~70% of values
m = np.random.choice([True, False], size=100, p=[0.7, 0.3])
df_categories = pd.DataFrame(np.where(m, 0, a),
columns=['number'])
df_categories发布于 2022-09-24 17:54:45
您可以执行以下操作:
n = 100
prob_0 = 0.7
a = [0] + list(np.arange(0, n)) # [0, 0, 1, 2, 3, ..., 99]
p = [prob_0] + [(1 - prob_0)/n] * n # [0.7, 0.003, ..., 0.003]
df_categories = pd.DataFrame(np.random.choice(a=a, size=n, p=p), columns=['number'])产出(例如):
number
0 0
1 32
2 0
3 39
4 0
.. ...
95 0
96 63
97 55
98 0
99 0
[100 rows x 1 columns]发布于 2022-09-24 18:04:23
你需要这个:
import pandas as pd
import numpy as np
import random
my_range=100
df_categories = pd.DataFrame(np.random.choice(a=[0] + list(np.arange(0, my_range)), size=100, p=[0.7] + [(0.3/my_range )]*my_range),
columns = ['number'])
df_categories输出:
number
0 0
1 8
2 40
3 73
4 0
... ...
95 75
96 94
97 4
98 0
99 25
100 rows × 1 columnshttps://stackoverflow.com/questions/73839333
复制相似问题