Python使用numpy.linalg.norm()查找距离矩阵-->;如何计算?

Python使用numpy.linalg.norm()查找距离矩阵-->;如何计算?,python,numpy,linear-algebra,distance,Python,Numpy,Linear Algebra,Distance,下面有一个向量,叫做向量: 我还有一个称为矩阵_b的矩阵: 我使用以下代码来计算距离矩阵 dist_matrix = np.linalg.norm(vector - matrix_b, ord=2, axis=1) 然后,我打印出dist_矩阵,以查看以下输出: print (dist_matrix ) [1.19505179 2.07862222] 我不明白从数学上如何从输入计算范数距离(即dist_矩阵)。有人能告诉我吗 >>> vector = np.array([

下面有一个向量,叫做向量:

我还有一个称为矩阵_b的矩阵:

我使用以下代码来计算距离矩阵

dist_matrix = np.linalg.norm(vector - matrix_b, ord=2, axis=1)
然后,我打印出dist_矩阵,以查看以下输出:

print (dist_matrix )

[1.19505179 2.07862222]
我不明白从数学上如何从输入计算范数距离(即dist_矩阵)。有人能告诉我吗

>>> vector = np.array([0.465344, 0.519904])
>>> matrix_b = np.array([[-0.701366,  0.261183],[-0.295642, -1.41441 ]])
>>> vector - matrix_b
array([[1.16671 , 0.258721],
       [0.760986, 1.934314]])
对于减法,
向量
被广播成
矩阵b
的形状。因此,结果的要素如下所示

vector[0] - matrix_b[0,0]    vector[1] - matrix_b[0,1]
vector[0] - matrix_b[1,0]    vector[1] - matrix_b[1,1]
那么

参考的文档,您可以看到
axis
参数指定了计算向量范数的轴。所以这里,
axis=1
意味着向量范数将在矩阵中的每行计算

然后,对于向量范数,
ord=2
意味着对于向量
x
,结果是
和(abs(x)**2)**(1./2)
(这也是欧几里德距离的公式)

因此,我们在数学上:

dist_matrix[0] == (abs(vector[0] - matrix_b[0,0])**2 + abs(vector[1] - matrix_b[0,1])**2)**(1./2)
dist_matrix[1] == (abs(vector[0] - matrix_b[1,0])**2 + abs(vector[1] - matrix_b[1,1])**2)**(1./2)
vector[0] - matrix_b[0,0]    vector[1] - matrix_b[0,1]
vector[0] - matrix_b[1,0]    vector[1] - matrix_b[1,1]
>>> dist_matrix = np.linalg.norm(vector - matrix_b, ord=2, axis=1)
>>> dist_matrix
array([1.19505179, 2.07862222])
dist_matrix[0] == (abs(vector[0] - matrix_b[0,0])**2 + abs(vector[1] - matrix_b[0,1])**2)**(1./2)
dist_matrix[1] == (abs(vector[0] - matrix_b[1,0])**2 + abs(vector[1] - matrix_b[1,1])**2)**(1./2)