Как эффективно преобразовать список в распределение вероятностей? - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь преобразовать список в распределение вероятностей.

x = [2, 4]

Мне нужен следующий массив в таком порядке.

probability_array = [1-(2+4)/10, 2/10, 4/10]

Итак, я сделал следующее ...

y = 1 - (2 + 4)/10
new_x = [2/10, 4/10]
probability_array = [y] + new_x

Проблема в том, что я работаю с 10 000 наборов данных, таких как x.Есть ли более быстрый способ сделать это?

1 Ответ

0 голосов
/ 08 июня 2018

Я думаю, что вы можете сделать это легко с NumPy.Вот пример правильности

x=[[1, 2], [3,4]]
x=np.array(x)
sum1 = np.sum(x, axis=1).reshape(2,1)
prob = x/sum

Я думаю, что это будет довольно быстро, даже если размер x> 10000.Давайте возьмем 100 функций для 10000 примеров

x=np.random.randint(1, 100, size=1000000)
print(x.shape)
start=time.time()
x=x.reshape(-1, 10000)
sum1=np.sum(x, axis=1).reshape((-1, 1))
prob=x/sum1
stop=time.time()
print(stop-start)

Это занимает около 0,021 сек на моем MBP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...