Мне нужно сгенерировать шипы с распределением Пуассона, его функция np.random.poisson().
но в самом простом объяснении, как я могу сгенерировать массив 0,1, число 1 равно 3, но размер массива должен быть [1,7]
Это означает следующее: a=[1,0,1,0,1,0,0].... только числа 1 должны быть распределены с помощью функции Пуассона в этом массиве.
Я очень сильно застрял в этой проблеме
Вы можете рассматривать поезд с шипами как массив 0, 1... просто нам нужно сказать, чтобы распределить эти три единицы с функцией Пуассона в массиве 1 * 7
@blthayer Я предполагаю, что это связано с моделированием нейронного кодирования: cns.nyu.edu/~david/handouts/poisson.pdf
спасибо за ваш ответ ... я изучал этот документ раньше, но я застрял в кодировании ... мне просто нужно знать, как можно сказать, что функция possion генерирует 3 единицы в 3 разных местах массива.






Спасибо @Z4-tier за эта ссылка. Внизу страницы 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 шипа. Фиксация количества шипов неуместна, учитывая мое понимание статьи.
@AtefehHedayati - Что вы имеете в виду, что это не работает для вас? Этот код выдает ошибку?
в нем нет ошибки, но мне нужно исправить количество единиц .... должно быть 3, а не 4 ... я получил ответ от @jonathan post .... спасибо :)
@AtefehHedayati - ответ Джонатана также не исправляет количество единиц. В его решении, чтобы зафиксировать количество единиц, вы должны были оба запустить генератор случайных чисел а также и настроить ввод expectation. Точно так же в моем ответе, чтобы исправить количество единиц, вам нужно заполнить генератор случайных чисел и настроить массив r.
да, верно ... количество 1 не фиксировано ... я также использовал ваш код в своей проблеме ... и почему-то я был неправ ... так как ваш ответ был правильным ... так, как вы сказали, это правильно способ, которым я могу генерировать всплески с помощью распределения Пуассона, и я ценю вашу помощь .... но ответ @jonathan также помог мне определить диапазон
Я бы попробовал определение черных полос (как видно из шипов, используемых при кодировании нейронов), что заставляет вас ограничивать пределы содомена функции, где бины - это ваша длина из 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]
Большое спасибо @jonathan ... это именно то, что я хочу ... это мне очень помогает ... мне нужно было указать диапазон для функции Пуассона ... спасибо за то, что уделили мне время ... молодец
Ой.извините... я сделал это :(
Что такое шипрейн? Должен ли ваш массив
aбыть1, если ничья из распределения Пуассона превышает некоторый порог?