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

标签 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],])

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

array([[ 11.,   5.,  14.,  10.],
       [  2.,   2.,   1.,   3.]])

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

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

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

最佳答案

这是一种 NumPythonic 方法,只需 reshape b 即可直接从中减去 a:

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

关于python - 求和 2 个 Numpy 数组之间的平方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688078/

相关文章:

python - 函数中的局部变量输出让我感到惊讶

python - 如何处理 Flask-Restplus 响应类中的多个 'GET' 端点

python - QT设计器没有安装uic程序来查看应用程序中的代码

opencv - Numpy 翻转图像 + cv2.filter2D = 断言失败?

python - 在 Matplotlib FuncAnimation 中制作动画时使用附加函数的困难

python - 在 numpy 数组的元素之间添加一个逗号

python - 如何在wxPython中注册多个KeyEvent触发器

python - 使用 su 时 CTRL+C 未在 python 脚本中处理

python - 为什么在我使用 Cython 的情况下向 C 连续数组赋值很慢

python - 是否可以通过 Python 中的另一个字符串列表过滤子字符串列表?