Skip to main content
 首页 » 编程设计

python之使用基于numpy数组中位置的numpy算术

2025年05月04日11hnrainll

我不太确定如何描述我的问题,但我会尝试。

我想知道 numpy 是否具有执行此操作的功能:

假设我有一个名为网格的二维数组:

grid = [ [0,0], 
         [0,0] ] 

我还有一个名为 aList 的第二个二维数组:

aList = [ [1,2], 
          [3,4] ] 

我想根据第一个数组的索引将数学应用于第一个数组。

所以在每次迭代中完成的数学运算看起来像这样:

grid[i][j] = [(i - aList[k][0]) + (j - aList[k][1])]  

目前在 python 中使用 for 循环执行此操作非常昂贵,因此我需要一个替代方案。

编辑:更多说明,如果我不使用 numpy,我会写这样的东西:

for i in range(2): 
    for j in range(2): 
        num = 0  
        for k in range(2): 
            num += (i-aList[k][0]) + (j-aList[k][1]) 
        grid[i][j] = num 

然而,对于我拥有的数据量,这是在 python 中减慢速度的方法。

请您参考如下方法:

您的代码可以按如下方式重现并显着加速:

i_s = np.arange(2) 
j_s = np.arange(2) 
 
fast_grid = (i_s + j_s[:, None])*len(aList) - aList.sum()