二维阵列差异的Numpy矢量化

时间:2012-03-20 00:06:07

标签: python numpy vectorization

我想在NumPy中的不同切片上绘制两个M x N阵列的差异。像这样:

dA = A[1:,:] - A[:-1,:]
dB = B[:,1:] - B[:,:-1]
C = dA * dB

但由于dA是(M-1)x N而dB是M x(N-1),所以它不是有效的操作。

换句话说,有没有办法在NumPy中对这个循环进行矢量化?

for i in range(M-1):
    for j in range(N-1):
        C[i,j] = (A[i+1,j] - A[i,j])*(B[i,j+1] - B[i,j])

2 个答案:

答案 0 :(得分:3)

看起来你想要:

dA = A[1:, :-1] - A[:-1, :-1]
dB = B[:-1, 1:] - B[:-1, :-1]
C = dA * dB

答案 1 :(得分:2)

你也可以使用numpy.diff函数

    np.diff(A, axis=0)[:, :-1] * np.diff(B, axis=1)[:-1, :]