[英]Using numpy arithmetic based on position in numpy array
我不太确定如何描述我的问题,但是我会尝试的。
我想知道numpy是否具有执行此操作的功能:
可以说我有一个称为grid的2D数组:
grid = [ [0,0],
[0,0] ]
我还有另一个名为aList的2D数组:
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.