【发布时间】:2013-08-22 00:37:31
【问题描述】:
我正在尝试在 Python 中模拟伯努利解析过程。我有一个 Matlab 示例。不管行话如何,我都会根据一些随机变量生成一个 0 和 1 的列向量。
num_trials = 1
b_energy_res = zeros(num_photon,num_trials);
for idx = 1:num_trials
energy_trial = randn(1,1)*energy_sigma+3*energy_sigma;
b_energy_res(:,idx) = rand(num_photons,1)>energy_trial;
end;
t = t+(1-b_energy_res)*1e9;
t = t/1e-12;
它将输出一些带有 0 和 1 的向量。
我尝试用 Python 做同样的事情,但我得到了错误。此外,我试图让 numpy 中的数组具有大约相同的 1 和 0 值频率。我可以做一个直方图来检查它们。我得到属性错误:
b_energy_res = np.zeros(num_photon)
energy_trial = np.random.standard_normal() * energy_sigma + 3 * energy_sigma
r = np.random.uniform(0.0,1.0,num_photon)
for i in xrange(int(num_photon)):
if r[i] > energy_trial[i]:
b_energy_res[i] = 1
t = t + (1-b_energy_res)*1e9
t = t*1e12
错误是: 'float' 没有属性 getitem
另外,这是否会产生我想要的效果?
【问题讨论】:
-
以后,请显示完整的回溯,而不仅仅是错误字符串的一部分。发布完整的 SSCCE 而不仅仅是不可运行的代码片段也有很大帮助。
标签: python arrays matlab random rows