2

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

我想知道 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 中减慢速度的方法。

4

1 回答 1

1

您的代码可以复制并大大加快如下:

i_s = np.arange(2)
j_s = np.arange(2)

fast_grid = (i_s + j_s[:, None])*len(aList) - aList.sum()
于 2013-07-02T20:04:29.423 回答