【问题标题】:Finding the probability of a variable in collection of lists在列表集合中查找变量的概率
【发布时间】:2019-04-21 04:51:37
【问题描述】:

我有一组变量列表

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 是无效语法

【问题讨论】:

  • 你必须传递一个变量名,而不是一个值。因此,您必须传递 def probability(some_variable_name) 而不是 def probability(0.12),它也可以是 def probability(some_variable_name=0.12)
  • 另外,len(w, x, y, z)没有意义。

标签: python numpy random probability


【解决方案1】:

代码中有几个问题,我想你想要以下:

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

它给出了预期的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多