2012-03-20 10 views
1

NumPyの異なるスライスにまたがる2つのM×N配列の違いをベクトル化したいと思います。このような何か:2D配列の違いのナンシーベクトル化

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

しかしdAは(M-1)NをXと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

感謝をnumpy.diff使用することができ、これは私が探していたものです。 –

2

ます。また、関数に

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