我想在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])
答案 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, :]