Python绘制连续数据直方图后如何获取各数据点对应的概率列表
你可以用numpy.digitize()方法定位每个数据点所属的bin索引,再通过索引映射到对应的bin_probability值即可,完整实现代码如下:
import numpy as np Data = [4.33, 4.11, 6.33, 5.67, 3.24, 6.74, 24.6, 6.43, 4.122, 9.67, 9.99, 3.44, 5.66, 3.54, 5.34, 6.55, 5.78, 3.56, 1.55, 5.45] n, bin_edges = np.histogram(Data, bins = 10) totalcount = np.sum(n) bin_probability = n / totalcount # 定位每个数据点对应的bin索引 bin_indices = np.digitize(Data, bin_edges) # 修正索引,避免边界值索引越界 bin_indices = np.clip(bin_indices - 1, 0, len(bin_probability) - 1) # 映射得到每个点对应的概率 point_probabilities = bin_probability[bin_indices] print(point_probabilities)
说明:
np.digitize返回的区间规则和np.histogram默认规则完全匹配,除最大值外所有区间均为左闭右开np.clip用于修正最大值的索引,避免落在最后一个bin的数值出现索引越界问题- 最终输出的
point_probabilities就是长度为20的概率列表,每个值和原Data列表的数据点一一对应
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

