【发布时间】:2017-11-02 22:33:44
【问题描述】:
有没有什么快速的方法可以合并两个具有不同 bin 范围和 bin 编号的 numpy 直方图?
例如:
x = [1,2,2,3]
y = [4,5,5,6]
a = np.histogram(x, bins=10)
# a[0] = [1, 0, 0, 0, 0, 2, 0, 0, 0, 1]
# a[1] = [ 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. ]
b = np.histogram(y, bins=5)
# b[0] = [1, 0, 2, 0, 1]
# b[1] = [ 4. , 4.4, 4.8, 5.2, 5.6, 6. ]
现在我想要一些这样的功能:
def merge(a, b):
# some actions here #
return merged_a_b_values, merged_a_b_bins
其实我还没有x和y,a和b只知道。
但是merge(a, b)的结果必须等于np.histogram(x+y, bins=10):
m = merge(a, b)
# m[0] = [1, 0, 2, 0, 1, 0, 1, 0, 2, 1]
# m[1] = [ 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. ]
【问题讨论】:
-
为什么不能使用更简单的组合列表并创建直方图的解决方案而不是合并两个直方图,即
np.histogran(x+y, bins=10) -
我没有 x 和 y :(
-
您能写下样本的预期输出(实际值)吗?
-
@Reti43 但我们知道 bins/ranges:a[1] 和 b[1] 将保存它(a[0] 和 b[0] 是直方图的值)。我们需要像重采样这样的东西......
-
重要的是直方图是用必要数量的箱创建的,以达到这个宽度。例如,对于列表
x = [4.38, 5.26, 5.27],您至少需要np.round((max(x) - min(x)) / 0.01) + 1箱,即90 个箱,以确保您的列表可以重建。如果您可以控制直方图的生成,即使您无法保存x和y的值,您仍然可以检索它们。
标签: python numpy merge histogram