假设我有以下两个数组:
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],])
对于a中的每一行a_行,我想得到a_行与b中每一行之间的平方差之和。得到的数组将是一个2乘4的数组。预期结果如下:
^{pr2}$我已经使用循环实现了一个解决方案:
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
我需要的是一个完全矢量化的解决方案,即不需要循环。在
如果您可以访问scipy,则可以执行以下操作:
这使用了cdist函数,该函数矢量化且速度快。使用numba或cython可以获得更快的速度,但这取决于实际中数组的大小。在
这是一种数算式方法,只需对}:
b
进行整形,以便能够直接从中减去{相关问题 更多 >
编程相关推荐