【发布时间】:2021-08-01 00:31:16
【问题描述】:
给定一个形状为(m,n) 的二维数值数组X,我想计算一个形状相同的数组Y,其中Y[i,j] 是X[i_,j_] 对0<=i_<=i, 0<=j_<=j 的累积和.如果X 描述了一个二维概率分布,那么Y 可以被认为是二维累积分布函数(CDF)。
我显然可以在双 for 循环中计算 Y 的所有条目。但是,此计算存在递归方面,如 Y[i,j] = X[i,j] + Y[i-1,j] + Y[i,j-1] - Y[i-1,j-1](其中负索引表示 0)。
我在寻找“2d Python cumsum”,我发现 NumPy 的 cumsum 只是将数组变平。
我的问题:
- 是否有用于高效计算
Y的标准 Python 函数? - 如果不是,上面的递归思想是最优的吗?
谢谢。
【问题讨论】:
-
看来您对 2d 累积和的方法是可行的。但是,我想知道您正在努力实现的更大目标是什么。如果您需要联合概率或条件概率,则二维累积和可能不会出现,可能需要进行一些其他计算。
-
@RobertDodier 这个问题源于一个涉及数组的所有平方子数组和的编码问题。我认为从左上角获取累积和有助于加快速度。
标签: python performance numpy probability cdf