plt.hist-加权因子乘以0.0667

时间:2018-12-05 13:45:56

标签: python

我已经成功地根据list x创建了直方图。

hist的计数应乘以系数0.0667。 如果我使用plt.hist的权重函数,则会出现错误。

这是我已经尝试过的!

counts= plt.hist(x,bins=[0,0.01,0.02], weights=(x*0.06666), facecolor='grey')

我猜这是一个非常简单的问题,但是我是python的新手!

2 个答案:

答案 0 :(得分:1)

在Python中,您不能将一个列表与一个因子相乘(除非您使用numpy数组,否则无论如何在这种情况下都是最好的主意)。

尝试

x_weights = [i*0.06666 for i in x]
counts = plt.hist(x,bins=[0,0.01,0.02], weights=x_weights, facecolor='grey')

import numpy as np
counts= plt.hist(x,bins=[0,0.01,0.02], weights=np.asarray(x)*0.06666, facecolor='grey')

此外,您的体重看起来也很圆。您应该考虑将加权因子保存到局部变量,然后在绘制直方图时使用

编辑:现在,我(希望)知道了真正的问题,这是如何处理数据的方法:

Numpy数组可以而且应该是多维的。如果您对332个输出进行15次仿真,那么自然应该会得到一个2D形状的数组(15L,332L),这意味着您将获得一个包含15行和332列的矩阵。

步骤1:

准备您的numpy数组:

x = np.zeros(shape=(15,332)) # this creates a 2D-matrix full of "0"

步骤2:

将每个模拟的输出写入相应的行:

for i_run in range(15):
    x[i_run,:] =  # result of the simulation # i_run

步骤3:

计算15次模拟运行的332个值的平均值:

x_mean = np.mean(x, axis=0)

axis=0告诉python计算列的平均值。 axis=1将返回您的行的平均值。

步骤4:

现在,您可以简单地绘制这些平均值的直方图:

counts = plt.hist(x_mean,bins=[0,0.01,0.02], facecolor='grey')

仍然让我感到困惑的是,您所说的“计数”。对我来说,“数”是一个整数。我只能计算“ 0、1、2、3、4,...”,而不是“ 0、0、0、0.11、0.11、0.15,...”

答案 1 :(得分:0)

x = [liste_FED_all]
zz = [0.066666667]*4980
counts= plt.hist(x, bins=[0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1,0.2,0.3,1], weights= zz, facecolor='grey',edgecolor='black')

权重函数是正确的,我必须为数组x的每个数字设置权重。因此,我创建了数组zz,它为数组x的每个数字提供了4980倍的因子!很简单,我花了10个小时!我还有很多东西要学! :)