给出按排序顺序的列表:
countries = ['USA', 'GB', 'RU', 'CN']
如何为np.pareto
中的每个项目分配countries
个概率?总概率不应大于1.0
期望的结果:
countries = [{
{"name": "USA",
"power": 0.24},
{...}
}]
我稍后会像这样访问数据:
np.random.choice(countries[name], p=countries[power])
答案 0 :(得分:1)
您需要np.random.pareto
的形状参数,我假设您只需要一个字典列表,而不是包含一个包含字典的集合的列表。这可能是您正在寻找的:
import numpy as np
countries = ['USA', 'GB', 'RU', 'CN']
pareto_shape = 1.
prob = np.random.pareto(pareto_shape, len(countries))
prob /= np.sum(prob)
out_list = []
for p, country in zip(prob, countries):
out_list.append({
'name': country,
'power': p,
})
print(out_list)
至少,这会给你一些看起来像
的东西[
{"name": "USA",
"power": 0.24},
{...}
]
但是如果您想使用np.random.choice
访问数据,那么您真正想要使用的是
import numpy as np
countries = ['USA', 'GB', 'RU', 'CN']
pareto_shape = 1.
prob = np.random.pareto(pareto_shape, len(countries))
prob /= np.sum(prob)
print(np.random.choice(countries, p=prob))