Python Matplotlib从二维numpy阵列列表中绘制pmf

Python Matplotlib从二维numpy阵列列表中绘制pmf,python,numpy,matplotlib,Python,Numpy,Matplotlib,我有一个来自模拟的数据集,我使用bl.extend(df['column'].tolist())将每个模拟种子的结果合并到一个更大的列表中 我还运行了几个模拟场景,所以我将每个场景附加到一个列表中 最后,我计算每个列表的概率质量函数(PMF),如下所示(从) 问题是我最终得到了一个我不知道如何绘制的numpy数组列表。再现问题的最低代码如下所示: import numpy as np list1 = np.empty([2, 2]) list2 = np.empty([2, 2]) list3

我有一个来自模拟的数据集,我使用
bl.extend(df['column'].tolist())
将每个模拟种子的结果合并到一个更大的列表中

我还运行了几个模拟场景,所以我将每个场景附加到一个列表中

最后,我计算每个列表的概率质量函数(PMF),如下所示(从)

问题是我最终得到了一个我不知道如何绘制的numpy数组列表。再现问题的最低代码如下所示:

import numpy as np

list1 = np.empty([2, 2])
list2 = np.empty([2, 2])
list3 = np.empty([2, 2])
bl = [] # big list
bl.append(list1)
bl.append(list2)
bl.append(list3)
print bl
我可以使用plt.hist(bl[0])进行绘图,但它不能给出正确的结果。有关以下列表,请参见随附的绘图

<type 'numpy.ndarray'>
[[0.00000000e+00 1.91734780e-01]
 [1.00000000e+00 2.94277080e-02]
 [2.00000000e+00 3.28276369e-01]
 [3.00000000e+00 4.43357154e-01]
 [4.00000000e+00 3.54294582e-03]
 [5.00000000e+00 1.57306794e-03]
 [6.00000000e+00 2.00530733e-03]
 [7.00000000e+00 2.95245485e-05]
 [8.00000000e+00 2.24386568e-05]
 [9.00000000e+00 2.83435665e-05]
 [1.00000000e+01 1.18098194e-06]
 [1.20000000e+01 1.18098194e-06]]
与直方图上的y值非常不同


下图看起来正确吗

import matplotlib.pyplot as plt
import numpy as np

X = np.array([[0.00000000e+00, 1.91734780e-01],
              [1.00000000e+00, 2.94277080e-02],
              [2.00000000e+00, 3.28276369e-01],
              [3.00000000e+00, 4.43357154e-01],
              [4.00000000e+00, 3.54294582e-03],
              [5.00000000e+00, 1.57306794e-03],
              [6.00000000e+00, 2.00530733e-03],
              [7.00000000e+00, 2.95245485e-05],
              [8.00000000e+00, 2.24386568e-05],
              [9.00000000e+00, 2.83435665e-05],
              [1.00000000e+01, 1.18098194e-06],
              [1.20000000e+01, 1.18098194e-06],])

plt.bar(x=X[:, 0], height=X[:, 1])
plt.show()

如果已经将第一列作为随机变量的可能值,第二列作为相应的概率值,则可以使用条形图来可视化PMF

直方图绘图函数
plt.hist
用于观察值的向量。比如说,

import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

np.random.seed(0)
plt.hist(np.random.normal(size=1000))
plt.show()

您想如何绘制它?你的x轴和y轴应该是什么?直方图有什么不对的地方?在我看来是正确的。我不明白它与pmf有什么关系。@HarvIpan x值是左边的值,y值是右边的值。@Goyo这是一个pmf,所有值加起来应该是一个。您提供的代码不会生成您打印的数组。
import matplotlib.pyplot as plt
import numpy as np

X = np.array([[0.00000000e+00, 1.91734780e-01],
              [1.00000000e+00, 2.94277080e-02],
              [2.00000000e+00, 3.28276369e-01],
              [3.00000000e+00, 4.43357154e-01],
              [4.00000000e+00, 3.54294582e-03],
              [5.00000000e+00, 1.57306794e-03],
              [6.00000000e+00, 2.00530733e-03],
              [7.00000000e+00, 2.95245485e-05],
              [8.00000000e+00, 2.24386568e-05],
              [9.00000000e+00, 2.83435665e-05],
              [1.00000000e+01, 1.18098194e-06],
              [1.20000000e+01, 1.18098194e-06],])

plt.bar(x=X[:, 0], height=X[:, 1])
plt.show()
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

np.random.seed(0)
plt.hist(np.random.normal(size=1000))
plt.show()