小编rav*_*ven的帖子

获取列表列表的 powerset

我得到了一个列表列表s

s = [["a1", "A"], ["b4", "B"], ["a3", "A"], ["d6", "D"], ["c4", "C"]]
Run Code Online (Sandbox Code Playgroud)

(请注意,列表中的元素不一定以相同的字母开头。为了方便起见,我在这里修改了数据。)

我的目标是将每个列表按其第二个元素排序到一个类别,并通过在每个类别中最多选择一个元素来获得所有可能的组合。

我首先将列表列表散列到字典中:

dic = {i[1]: [] for i in s}
for i in s:
    # set the value of the first item key to the second item
    dic[i[1]].append(i[0])

dic
>>> {'A': ['a1', 'a3'], 'B': ['b4'], 'C': ['c4'], 'D': ['d6']}
Run Code Online (Sandbox Code Playgroud)

所有可能组合的数量,即幂集的长度s,应该返回23

{'a1'},
{'a3'},
{'b4'},
{'c4'}, 
{'d6'}, 
{'a1', 'b4'}, 
{'a1', 'c4'}, 
{'a1', 'd6'}, 
{'a3', 'b4'}, 
{'a3', 'c4'}, 
{'a3', 'd6'}, 
{'b4', 'c4'}, 
{'b4', …
Run Code Online (Sandbox Code Playgroud)

python hash combinations

4
推荐指数
1
解决办法
55
查看次数

如何在Python中平滑概率分布图?

我制作了一个概率 DataFrame df,按以下顺序排序value

    value   prob
0   -31     0.002597
1   -23     0.005195
2   -22     0.005195
3   -21     0.002597
4   -20     0.002597
5   -18     0.005195
6   -15     0.002597
...
39  19      0.007792
40  21      0.002597
41  22      0.005195
42  23      0.002597
43  25      0.002597
44  28      0.002597
45  29      0.005195
46  37      0.002597
Run Code Online (Sandbox Code Playgroud)

(如您所见, 的值value并未涵盖df[0]和之间的所有整数df[46]

我通过简单地执行以下命令绘制了概率分布图:

import matplotlib as plt

plt.plot(df['value'], df['prob'])
Run Code Online (Sandbox Code Playgroud)

它返回的

在此输入图像描述

现在,我想平滑概率曲线,所以我尝试了两种方法。首先,我尝试过np.polyfit

import numpy as np

x = df['value'] …
Run Code Online (Sandbox Code Playgroud)

python probability-distribution

2
推荐指数
1
解决办法
5024
查看次数