Как сгенерировать массив из 1,0 с распределением Пуассона в python - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно создать spiketrains с распределением Пуассона, его функция равна np.random.poisson(). но в простейшем объяснении, как я могу сгенерировать массив из 0,1, что количество единиц равно 3, но размер массива должен быть [1,7]

Это означает, что это так: a=[1,0,1,0,1,0,0].... только числа 1 должны быть распределены с функцией Пуассона в этом массиве.

Я очень сильно застрял в этой проблеме

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Я бы попробовал определение черных полос (как видно в поездах с шипами, которые используются при кодировании нейронов), которое ограничивает пределы области функций, где ячейки - это ваша длина 7 элементов

    import numpy as np


    def black_bars(expectation, bins):
        poisson = np.random.poisson(expectation, bins)
        bounded_poisson = np.clip(poisson, a_min=0, a_max=1)

        print('original -> {0}'.format(poisson))
        print('bounded -> {0}'.format(bounded_poisson))


    black_bars(.5, 7)

вывод

    original -> [0 1 2 0 1 3 2]
    bounded -> [0 1 1 0 1 1 1]
0 голосов
/ 08 июля 2019

Спасибо @ Z4-уровню за эту ссылку . Внизу страницы 5 начинается раздел под названием «Создание поездов Пуассона с шипами».

Вот одно из возможных решений:

"""Generate a spike train. See page 5 and 6 here:
https://www.cns.nyu.edu/~david/handouts/poisson.pdf

This will use the first method described.
"""
import numpy as np
# Seed the generator for consistent results.
np.random.seed(42)

# We need to start with some sort of r(t). Presumably the asker of this
# question has access to this.
r = np.array([100, 500, 600, 700, 300, 200, 900])

# Define our time interval, delta t. Use one millisecond as suggested
# in the paper.
dt = 0.001

# Draw 7 random numbers on the interval [0, 1)
x = np.random.rand(7)

# Initialize output.
spikes = np.zeros_like(r)

# If x[i] <= r * dt, generate a spike.
mask = x <= r * dt

# Set to 1.
spikes[mask] = 1

print(spikes)

Выход:

[0 0 0 1 1 1 1]

Нет, это не генерирует 3 пика. Фиксировать количество шипов нецелесообразно, учитывая мое понимание статьи.

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