python - x 坐标大于某个值的堆叠直方图(加权)中的 bin 计数
问题描述
假设我有两个数据集,然后我绘制了两个具有一定权重的数据集的堆叠直方图。现在,我能知道大于某个数字的数据元素的总 bin 计数是多少(即 x 坐标大于某个值)。为了说明我的问题,我做了以下
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.normal(0,0.6,1000)
data2 = np.random.normal(0,1.4,1000)
weight1 = np.array([0.5]*len(data1))
weight2 = np.array([0.9]*len(data2))
hist = plt.hist((data1,data2),weights=(weight1,weight2),stacked=True,range=(-5,5))
plt.show()
现在,我怎么知道垃圾箱的数量,比如x
大于 -2?
到目前为止,为了得到这个答案,我正在做以下事情
n1,_,_ = plt.hist((data1,data2),weights=(weight1,weight2),stacked=False,range=(-2,10000))
bin_counts=sum(sum(n1))
print(bin_counts)
在这里,我选择范围内的最大值是一个非常大的数字,这样我就可以得到所有的 bin 计数x=-2
和更大的值。
还有比这更有效的方法吗?
另外,获取bin_counts
变量的方法是什么x
,其中x
在某些步骤中从 x 坐标的最小值到 x 坐标的最大值变化?
任何帮助将不胜感激!
非常感谢!
解决方案
您可以执行以下操作:
#in your case n is going to be a list of arrays, because you have 2 histograms
n,bins,_ = plt.hist(...)
#get a list of lists of counts for bin values over x
n_over_x = [[val for val,bin in zip(selected_cnt, bins) if bin > x] for selected_cnt in n]
#sum up list of lists
result = sum([sum(part_list) for part_list in n_over_x])
推荐阅读
- c++ - 根据第一个和最后一个字符在拼字游戏中找到符合条件的单词
- c++ - 为什么 Qt Creator 创建的 dll 与普通的 dll 不同(非托管)
- json - 如何创建具有日期索引的模型?
- java - 如何使用 RecyclerView 从 Firebase 获取密钥
- python - 将二维数组转换为图像
- javascript - 如何使用嵌套组件对组件进行快照测试?
- ios - Swift - 根据日期数组对不同的数组进行排序
- php - 如何在 WordPress 中为已注销的用户添加重定向异常
- python - 以 JSON 格式发送 OpenCV 图像
- git - 如何将 GitHub QGumboParser 库添加到 macOS 上的 Qt 项目?