Giả sử tôi có 2 mảng sau:Sum chênh lệch bình phương giữa 2 NumPy mảng
import numpy as np
a=np.asarray([[1,2,4],
[3,1,2]])
b=np.asarray([[2,1,1],
[3,2,3],
[4,1,2],
[2,2,1],])
Đối với mỗi a_row hàng trong một, tôi muốn có được số tiền chênh lệch bình phương giữa a_row và mỗi dòng trong b . Mảng kết quả sẽ là một mảng từ 2 đến 4. Kết quả dự kiến sẽ được như sau:
array([[ 11., 5., 14., 10.],
[ 2., 2., 1., 3.]])
Tôi đã thực hiện một giải pháp sử dụng vòng lặp:
c=np.zeros((2,4))
for e in range(a.shape[0]):
c[e,:] = np.sum(np.square(b-a[e,:]),axis=1)
print c
Những gì tôi cần là một giải pháp hoàn toàn vectorized, tức là không có vòng lặp là bắt buộc.
Có vẻ như một cách tự nhiên cho lambdas và đóng cửa. – duffymo