Нахождение вероятности переменной в коллекции списков - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть выборка списков переменных

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 голосов
/ 19 ноября 2018

В коде есть несколько проблем, думаю, вам нужно следующее:

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) тоже не имеет особого смысла; Вы, вероятно, ищете список, который объединяет все элементы w, x, y и z. Я положил все эти в списке combined.

3) В случае, если пользователь проходит, например, необходимо будет провести дополнительную проверку, например. v=12345 который не включен в combined (я оставляю это вам).

Выше будет напечатано

0.0625
0.125

, который дает ожидаемый результат.

...