python - 如何向量化这个累积运算?

标签 python numpy

W 是一些维度为 (x, nP) 的矩阵 [见问题结尾]

现在,我正在执行以下代码:

uUpperDraw = np.zeros(W.shape)
for p in np.arange(0, nP):
    uUpperDraw[s, p] = (W[s+1,:(p+1)]).sum()

我想对其进行矢量化以提高效率。给定一个 pGrid = [0, 1, ...],我如何重现以下内容?

uUpperDraw = np.array([sum(W[x, 0]), sum(W[x,0] + W[x, 1]), sum(W[x,0] + W[x, 1] + W[x, 2]) ...

这是一些可重现的例子。

>>> s, nP
(3, 10)
>>> W

array([[ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 2.        ,  1.63636364,  1.38461538,  1.2       ,  1.05882353,
         0.94736842,  0.85714286,  0.7826087 ,  0.72      ,  0.66666667]])
>>> uUpperDraw
array([[  0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ],
       [  0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ],
       [  0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ],
       [  2.        ,   3.63636364,   5.02097902,   6.22097902,
          7.27980255,   8.22717097,   9.08431383,   9.86692252,
         10.58692252,  11.25358919],
       [  0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ]])

最佳答案

这看起来像是累计和。当你想分别计算每一行的累计总和时,这里就可以了

uUpperDraw = np.cumsum(W,axis=1)

关于python - 如何向量化这个累积运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922182/

相关文章:

python - 当我有大量数组时检查重复数组

python - 如何将数组与数组列表进行比较?

python - "[Errno 13] Permission denied"仅在 Ubuntu 服务器上尝试更新/更改文档时

python - 无法弄清楚如何计算 .wav 文件的光谱属性

python - 解析 svg :path d attribute

列表中的 Python 运行总和

python - 重写函数以避免 numpy.exp 中的溢出

python - python中不同维度数组的二维插值

python - 如何过滤中文(仅限中文)

python - 命令未找到 : django-admin (using anaconda 3. 2.4 和 pyenv)