2012-03-20 166 views
1

我想在NumPy的不同切片中向量化兩個M×N陣列的差異。事情是這樣的:2D陣列差異的Numpy向量化

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

但由於dA是(M-1)×N和dB爲M×(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]) 

回答

3

它看起來像你想:

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

謝謝,這是我一直在尋找。 – 2012-03-20 00:21:47

2

你也可以使用numpy.diff功能

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