Python使用numpy.linalg.norm()查找距离矩阵-->;如何计算?
下面有一个向量,叫做向量: 我还有一个称为矩阵_b的矩阵: 我使用以下代码来计算距离矩阵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([
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)