在numpy矩阵中增加低于某个指数的值

时间:2018-05-26 16:48:24

标签: python numpy numpy-ndarray

我试图使用2D numpy矩阵计算累积概率计数。当一个对象的x轴为x,y轴为y时,我将添加到索引小于或等于(x,y)的单元格

即。该对象在3x3索引单元格中具有1,1。矩阵应该如下所示:

[1][1][0]
[1][1][0]
[0][0][0]

问题是,我不能通过像matrix[:1][:1]这样的索引来做到这一点。

如果可能的话。我不想切换到其他库而不是numpy因为它需要太多的工作。是否有任何pythonic方法可以在不使用令人生畏的for循环的情况下完成它?

1 个答案:

答案 0 :(得分:3)

您必须一步进行索引,即[i_expr,j_expr]而不是[i_expr][j_expr]。 ([][]形式仅适用于标量索引,甚至存在错误的样式。)如果要包含边界,还必须添加1。

>>> bins = np.zeros((5, 5), int)
>>> i, j = 1, 1
>>> bins[:i+1, :j+1] += 1
>>> bins
array([[1, 1, 0, 0, 0],
       [1, 1, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])