更新 2D numpy 数组值

Per*_*oob 1 python arrays numpy function

有没有更有效的方法来更新多维 numpy 数组的值?
例如,我有一个循环

        for i in np.arange(5):
            for j in np.arange(5):  
                if (i + j) % 2 == 0:   
                    v[i,j] = v[i,j] + v[i, j + 1]  
Run Code Online (Sandbox Code Playgroud)

我正在考虑稍后(使用multiprocessingPool)并行化这个过程,但我无法想象如何实现。也许定义一个函数并使用map,但这是一个二维数组,操作取决于元素索引。

ali*_*i_m 6

基本上你正在这样做:

在此输入图像描述

您可以使用切片索引在两行中完成此操作:

v[0:5:2,0:5:2] += v[0:5:2,1:6:2]    # even rows
v[1:5:2,1:5:2] += v[1:5:2,2:6:2]    # odd rows
Run Code Online (Sandbox Code Playgroud)

  • 在这些情况下,并行化通常是您最不想使用的工具。要想很好地实现它会更加痛苦,它会增加更多的复杂性和开销,并且对于像这样的简单操作,您可能会看到很少(如果有的话)的性能优势。学习如何充分利用 numpy 中的矢量化效果会更好。 (3认同)