Which elements of list go into which histogram bins?(列表中的哪些元素放入哪些直方图箱中?)
本文介绍了列表中的哪些元素放入哪些直方图箱中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试从直方图绘制比例散点图。散点图相当简单,制作直方图、查找仓位中心、散点图。
nbins=7
# Some example data
A = np.random.randint(0, 10, 100)
B = np.random.rand(100)
counts, binEdges=np.histogram(A,bins=nbins)
bincenters = 0.5*(binEdges[1:]+binEdges[:-1])
fig = plt.figure(figsize=(7,5))
ax = fig.add_subplot(111)
ax.scatter(bincenters,counts,c='k', marker='.')
ax_setup(ax, 'X', 'Y')
plt.show()
但是我希望A的每个元素只向其绑定贡献一个缩放值,该缩放值存储在B中。(即,我希望每个bin不是该bin的A中的元素计数,而是B中的相应值之和)
为此,我尝试创建一个列表C(与A和B长度相同),该列表为A的每个元素分配仓号,然后将B中的所有值相加到同一仓位。我想numpy.searchsorted()就是我需要的,例如
C = bincenters.searchsorted(A, 'right')
但是这没有正确分配,并且似乎没有返回正确的箱数。
那么,我如何创建一个列表来告诉我每个数据元素都属于哪个直方图框?
推荐答案
您写的
但我希望A的每个元素只向其bin贡献一个缩放值,该缩放值存储在B中(即,不是每个bin是该bin的A的元素计数,而是希望每个bin是B的相应值的总和)
IIUC,numpy.histogram中已通过weights参数:
与a形状相同的权重数组。a中的每个值仅将其关联的权重贡献给仓位计数(而不是1)。如果Normded为True,则会规格化权重,因此范围内的密度积分仍为1。
因此,对于您的情况,它将只是
counts, binEdges=np.histogram(A, bins=nbins, weights=B)
另外一点:如果您打算绘制直方图,请注意,您可以直接使用matplotlib.pyplot的实用程序函数(也需要weights):
from matplotlib import pyplot as plt
plt.hist(A, bins=nbins, weights=B);
最后,如果您打算将作业放到垃圾箱中,numpy.digitize就是这样做的:
nbins=7
# Some example data
A = np.random.randint(0, 10, 10)
B = np.random.rand(10)
counts, binEdges=np.histogram(A,bins=nbins)
>>> binEdges, np.digitize(A, binEdges)
array([ 0. , 1.28571429, 2.57142857, 3.85714286, 5.14285714,
6.42857143, 7.71428571, 9. ])
这篇关于列表中的哪些元素放入哪些直方图箱中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:列表中的哪些元素放入哪些直方图箱中?
基础教程推荐
猜你喜欢
- 在 Python 中将货币解析为数字 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
