python - 如何计算矩阵和向量的距离?
问题描述
在 python 中,给定一个大小为2*3
like
的矩阵A=[[x11,x12,x13],[x21,x22,x23]]
和一个列向量b=[mu1;mu2]
。如果我想计算A
和 vector的每一列之间的欧几里得距离b
。例如,对于第一列,距离“d1”由下式给出
A=[[x11,x12,x13],[x21,x22,x23]]
b=[[mu1],[mu2]]
d1=(x11-mu1)^2+(x21-mu2)^2
#second column
d2=(x12-mu1)^2+(x22-mu2)^2
# so on
所以距离可以在[d1,d2,d3]
大小矩阵中进行评分3*1:
我可以计算较小矩阵的距离。但是如果矩阵A
像 size 一样大2*100
,如何获得所有距离的数量(即一个大小的矩阵100*1
很容易?
解决方案
您可以使用逐点减法,然后对两列求平方和求和:
>>> np.sum((A-b)**2, 1)
正如@Gilad Green所指出的,如果b
是形状,(n, 1)
则需要转置:
无论是b
:
>>> np.sum((A-b.T)**2, 1)
或 on A
(注意 上的总和axis=0
)
>>> np.sum((A.T-b)**2, 0)
>>> A = np.random.rand(3,2)
>>> b = np.random.rand(2)
>>> A - b
array([[0.21263611, 0.47988496],
[0.91061396, 0.93371001],
[0.66321026, 0.21926392]])
>>> (A - b)**2
array([[0.04521411, 0.23028957],
[0.82921779, 0.87181438],
[0.43984785, 0.04807667]])
>>> np.sum((A-b)**2, 1)
array([0.27550369, 1.70103217, 0.48792451])
推荐阅读
- python - 如何在python中强制位数
- haskell - Haskell中的相交函数
- subquery - Sequelize Top level 使用热切加载的模型创建子查询
- visual-studio - Uninstall nuget packages installed with nuget.exe
- python - 将图像中的像素值编辑为 numpy 数组
- python - 迭代图中的标记
- angular - 延迟加载路由未打开子模块组件
- linux-kernel - 如何释放Linux内核中一个垂死的进程持有的所有锁
- asp.net - IIS Web 应用程序初始化序列反复崩溃和重新启动
- telegraf - 从 Windows git bash 向电报发送数据