当cdf表示从cv2.calcHist构建的累积分布函数时,Cdf / Cdf [-1]会做什么?

时间:2019-06-06 14:55:32

标签: python python-3.x cv2 np cdf

我试图破译由自由职业者完成的代码块,而我一直陷于这一部分。我无法对此代码进行过多的介绍,但是我可以说的是他在def run(self)内部创建了一个新变量。我们将其命名为“结果”。然后取一个np.cumsum(histogram)称为“ HistCumSum”并执行以下操作-> Result = HistCumSum / HistCumSum [-1]

我已经在Google上搜索了大约一个星期,并试图打印出数值/手动进行数学运算,这是没有道理的

 HistCumSum = np.cumsum(Hist)

 Result = HistCumSum / HistCumSum[-1]

我无法解释结果的用途

1 个答案:

答案 0 :(得分:0)

HistCumSum[-1]是数组HistCumSum中的最终值。由于HistCumSum是累积总和,我们可以将Result = HistCumSum / HistCumSum[-1]视为 normalization 从累积频率到累积分布函数

看看HistHistCumSumResult的外观可能有助于清除问题:

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, num=100)
# Evaluate pdf in lieu of actual data
Hist = norm.pdf(x)

# Compute cumulative sum
HistCumSum = np.cumsum(Hist)
# Normalise cumulative sum to produce cdf
Result = HistCumSum / HistCumSum[-1]

fig, ax = plt.subplots(1, 3, figsize=[7, 3])
ax[0].plot(x, Hist)
ax[1].plot(x, HistCumSum)
ax[2].plot(x, Result)
ax[0].set_title('Hist')
ax[1].set_title('HistCumSum')
ax[2].set_title('Results (CDF)')
fig.tight_layout()

enter image description here