给定两个矩阵,我想创建一个每行差平方和的新数组,但我似乎找不到方法
为了更清楚我的意思,让我们举个例子。我想对numpy矩阵计算中的循环执行以下操作:
a = np.array([[0.0, 0.0, 0.0], [1.0, 1.0, 1.0]])
b = np.array([[1.2, 2.3, 3.4], [4.5, 5.6, 7.8], [9.10, 10.11, 11.12]])
summed = np.ones((2,3))
for i, aSample in enumerate(a):
for j, bSample in enumerate(b):
summed[i, j] = np.sum(np.power(aSample - bSample, 2))
>>>summed
array([[ 18.29 , 112.45 , 308.6765],
[ 7.49 , 79.65 , 251.0165]])
这些只是示例矩阵,在我的用例中,两个矩阵都有数万行。所以这些矩阵的形状更像(20000,1000)。有没有办法用numpy有效地做到这一点
编辑: @Blorgon提供了正确的结果,但在我的例子中,我无法使用np.newaxis分配更大的矩阵。一位@mad物理学家的解决方案成功地计算了内存限制内的向量距离
由blorgon建议的numpy解决方案可能更快,但您也可以使用^{} :
这种方法的问题是,它取一个平方根,然后将其撤消。优点是它不使用大型中间阵列。您可以避免numpy中的某些中间产物,如下所示:
您可以使用
np.newaxis
来实现所需的结果:编辑:虽然我的解决方案更快,但如果内存很重要,那么
scipy
解决方案更好相关问题 更多 >
编程相关推荐