每个 bin 的值

我遇到以下问题:

hist, edges = np.histogram(data, bins=50)

如何访问每个 bin 的值?我想计算每个 bin 的平均值。

谢谢


温温酱
浏览 202回答 1
1回答

繁花如伊

我认为此功能可以满足您的需求:import numpy as npdef binned_mean(values, edges):&nbsp; &nbsp; values = np.asarray(values)&nbsp; &nbsp; # Classify values into bins&nbsp; &nbsp; dig = np.digitize(values, edges)&nbsp; &nbsp; # Mask values out of bins&nbsp; &nbsp; m = (dig > 0) & (dig < len(edges))&nbsp; &nbsp; values = values[m]&nbsp; &nbsp; dig = dig[m] - 1&nbsp; &nbsp; # Binned sum of values&nbsp; &nbsp; nbins = len(edges) - 1&nbsp; &nbsp; s = np.zeros(nbins, dtype=values.dtype)&nbsp; &nbsp; np.add.at(s, dig, values)&nbsp; &nbsp; # Binned count of values&nbsp; &nbsp; count = np.zeros(nbins, dtype=np.int32)&nbsp; &nbsp; np.add.at(count, dig, 1)&nbsp; &nbsp; # Means&nbsp; &nbsp; return s / count.clip(min=1)例子:print(binned_mean([1.2, 1.8, 2.1, 2.4, 2.7], [1, 2, 3]))# [1.5 2.4]但是,此函数中的直方图略有不同,因为np.digitize认为所有 bin 都是半封闭的(右侧或左侧),与np.histogram认为最后一个边缘是闭合的不同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python