2012-03-20 3 views
1

NumPy의 여러 조각에서 두 개의 M × N 배열의 차이를 벡터화하고 싶습니다. 이런 식으로 뭔가가 : 2D 배열 차이의 탁월한 벡터화

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

그러나 dA 이후

는 (M-1) N과 dB는 M의 × (N-1)이 유효한 작업입니다입니다 X.

즉, 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]) 

답변

3

그것은 당신이 원하는 다음과 같습니다

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

감사를 numpy.diff 사용할 수 있습니다, 이것은 내가 찾고 있었던 것입니다. –

2

또한 기능을

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