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 的 List 是如何实现的? 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01