我有一个保存在数组中的直方图,第一列是bin的最右边,第二列是相应的频率。举例来说:
array([[1.00000000e+00, 9.76765797e-02],
[2.00000000e+00, 3.26260189e-02],
[3.00000000e+00, 2.27720518e-03],
[4.00000000e+00, 1.61188858e-01],
[5.00000000e+00, 1.23496687e-01],
[6.00000000e+00, 2.04377586e-01],
[7.00000000e+00, 7.47678209e-02],
[8.00000000e+00, 4.67140951e-02],
[9.00000000e+00, 1.31659099e-01],
[1.00000000e+01, 1.25216050e-01]])
字符串
什么是最快的方法来重新划分这个直方图,例如,通过采取一个bin大小为2.5
?
得到的数组应该将2.5,5.0,7.5,10.0
作为第一列,将间隔[0,2.5],(2.5,5.0],(5.0,7.5],(5.0,10.]
中的频率值之和作为第二列。
我试图找到一种紧凑的方式来进行这种转换,但找不到它。
**编辑:**正如Jakob Stark让我注意到的那样,一般来说,不可能重新划分直方图。然而,可以合并箱。例如,将箱大小加倍或三倍。如何以紧凑的方式做到这一点?
我已经更新了问题的标题以反映编辑。
3条答案
按热度按时间qkf9rpyu1#
不能对直方图进行重新分组。如果您在直方图中填充数据,您会丢失信息(实际上这通常是您需要直方图的原因)。除非你仍然有原始数据,否则没有办法得到一个不同分箱的直方图。
如果你有原始数据,你当然可以用它制作一个新的直方图。
编辑您可以合并bin。因此,只要您的新bin可以通过合并bin(例如,将bin大小加倍),您可以仅将每个贡献bin的wheights添加到合并bin。
编辑要将bin大小加倍,例如您可以使用
字符串
raogr8fs2#
最后,我用这个。不过,恐怕效率不高:
字符串
仍然对更高效/紧凑的方法感兴趣。
6yoyoihd3#
我发现使用矢量数学通常是一种更有效的组合箱子的方法。这可以通过使用the indexing features of ndarrays in numpy来实现。下面是上面使用striding(start:stop:step)的例子。
字符串