如何使用二维数组创建直方图
How do I create a histogram with a 2D array
我有一个 7x2 矩阵,第一列是数量,第二列是值:
[[0.5 3. ]
[0.5 4. ]
[1. 4. ]
[0.5 8. ]
[0.5 9. ]
[0.5 8. ]
[0.5 5.99638637]]
例如,第一行表示值 3 中有 0.5 个。考虑到值可能以多个形式出现,我应该如何制作一个直方图,其中 x 轴表示值,y 轴表示数量行数?
所以我的建议是创建一个numpy数组,然后遍历行,将出现的次数添加到字典中的一个键,将字典中的键初始化为0。
import collections
import numpy as np
import matplotlib.pyplot as plt
myArray = np.array([[0.5, 3. ],
[0.5, 4. ],
[1., 4. ],
[0.5, 8. ],
[0.5, 9. ],
[0.5, 8. ],
[0.5, 5.99638637]])
myDict = collections.defaultdict(lambda:0)
for i in range(myArray.shape[0]):
myDict[myArray[i,1]] += myArray[i,0]
plt.bar(myDict.keys(), myDict.values())
plt.show()
我有一个 7x2 矩阵,第一列是数量,第二列是值:
[[0.5 3. ]
[0.5 4. ]
[1. 4. ]
[0.5 8. ]
[0.5 9. ]
[0.5 8. ]
[0.5 5.99638637]]
例如,第一行表示值 3 中有 0.5 个。考虑到值可能以多个形式出现,我应该如何制作一个直方图,其中 x 轴表示值,y 轴表示数量行数?
所以我的建议是创建一个numpy数组,然后遍历行,将出现的次数添加到字典中的一个键,将字典中的键初始化为0。
import collections
import numpy as np
import matplotlib.pyplot as plt
myArray = np.array([[0.5, 3. ],
[0.5, 4. ],
[1., 4. ],
[0.5, 8. ],
[0.5, 9. ],
[0.5, 8. ],
[0.5, 5.99638637]])
myDict = collections.defaultdict(lambda:0)
for i in range(myArray.shape[0]):
myDict[myArray[i,1]] += myArray[i,0]
plt.bar(myDict.keys(), myDict.values())
plt.show()