求和2个Numpy数组之间的平方差

All*_*len 5 python numpy

假设我有以下2个数组:

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],])
Run Code Online (Sandbox Code Playgroud)

对于a中的每一行a_row,我想得到a_row和b中每一行之间的平方差的总和.结果数组将是一个2乘4的数组.预期结果如下:

array([[ 11.,   5.,  14.,  10.],
       [  2.,   2.,   1.,   3.]])
Run Code Online (Sandbox Code Playgroud)

我已经使用循环实现了一个解决方案:

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
Run Code Online (Sandbox Code Playgroud)

我需要的是一个完全矢量化的解决方案,即不需要循环.

Kas*_*mvd 4

这是一种 Numpythonic 方法,只需重塑 ,b以便能够直接a从中减去 :

>>> np.square(b[:,None] - a).sum(axis=2).T
array([[11,  5, 14, 10],
       [ 2,  2,  1,  3]])
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3840 次

最近记录:

9 年,7 月 前