在列表集合中查找变量的概率

时间:2018-11-18 18:43:26

标签: python numpy random probability

我有一些变量列表

import numpy.random as npr 

w = [0.02, 0.03, 0.05, 0.07, 0.11, 0.13, 0.17]

x = 1

y = False

z = [0.12, 0.2, 0.25, 0.05, 0.08, 0.125, 0.175]

v = npr.choice(w, x, y, z)

我想找到值V是变量选择的概率,例如;错误或0.12。

我该怎么做。 这是我尝试过的;

 import numpy.random as npr
import math 

w = [0.02, 0.03, 0.05, 0.07, 0.11, 0.13, 0.17]
x = 1
y = False
z = [0.12, 0.2, 0.25, 0.05, 0.08, 0.125, 0.175]

v = npr.choice(w, x, y, z)

from collections import Counter 
c = Counter(0.02, 0.03, 0.05, 0.07, 0.11, 0.13, 0.17,1,False,0.12, 0.2, 0.25, 0.05, 0.08, 0.125, 0.175)

def probability(0.12):
    return float(c[v]/len(w,x,y,z))

我知道0.12是无效的语法

1 个答案:

答案 0 :(得分:0)

代码中有几个问题,我想您需要以下内容:

import numpy.random as npr
import math
from collections import Counter


def probability(v=0.12):
    return float(c[v]/len(combined))


w = [0.02, 0.03, 0.05, 0.07, 0.11, 0.13, 0.17]
x = [1]
y = [False]
z = [0.12, 0.2, 0.25, 0.05, 0.08, 0.125, 0.175]

combined = w + x + y + z

v = npr.choice(combined)

c = Counter(combined)

print(probability())
print(probability(v=0.05))

1)def probability(0.12)没有道理;您将必须传递一个也可以具有默认值的变量(以上我使用0.12

2)len(w, x, y, z)也没有太大意义;您可能会寻找一个列表,其中包含wxyz的所有元素。我将所有这些都放在列表combined中。

3)如果用户通过了例如v=12345中未包含的combined(我留给您)。

上面将打印

0.0625
0.125

给出预期的结果。