我需要生成具有泊松分布的峰值序列,其功能为np.random.poisson()
。
但在最简单的解释中,我如何生成0,1的数组,即1的数量为3,但数组的大小应为[1,7]
这意味着:a=[1,0,1,0,1,0,0]....
只能使用泊松函数在该数组中分配数字1。
我非常困在这个问题上
答案 0 :(得分:0)
感谢this link使用@ Z4层。在第5页的底部,有一个标题为“生成Poisson Spike火车”的部分开始。
这是一种可能的解决方案:
"""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个尖峰。考虑到我对论文的理解,固定峰值的数量不合适。
答案 1 :(得分:0)
我会尝试定义黑条(如在神经元编码中使用的尖峰序列中所见),这使您限制了函数共域的限制,其中bins是您的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]