假设我有以下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)
我需要的是一个完全矢量化的解决方案,即不需要循环.
这是一种 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 次 |
| 最近记录: |