这过去在MATLAB中很简单,但在Python中仍然很简单。我正在寻找Lambda数组,以生成Poisson分布随机数以插入直方图。
lambda = [0.1 0.4]
我以前可以放在那里:
n = poissrnd(a,10)
并为每个lambda返回10行x 2列的随机生成的Poisson编号的数组(每列代表每个lambda的10个样本)。由于某些原因,这种情况已经改变-我不确定为什么。
在Python中-仅需输入以下内容即可实现
:n = np.random.poisson(lambda, [10,2])
我一直把头撞在桌子上-任何帮助将不胜感激...
答案 0 :(得分:1)
让我们
N = 10;
lambda = [0.1 0.4];
无循环:来自documentation,
R = poissrnd(lambda)
从泊松分布中使用均值参数lambda
生成随机数。lambda
可以是向量,矩阵或多维数组。R
的大小就是lambda
的大小。
所以:
result = poissrnd(repmat(lambda, N, 1));
具有for
循环:
result = NaN(N, numel(lambda)); % preallocate
for k = 1:numel(lambda)
result(:,k) = poissrnd(lambda(k), [N 1]);
end
使用arrayfun
:
result = cell2mat(arrayfun(@(x) poissrnd(x, [N 1]), lambda, 'uniformoutput', false));