需要注意两个矩阵维度不同的时候,不可以直接做减运算,需要对某个矩阵扩增维度,然后求和降维
# -*- encoding: utf-8 -*-
import tensorflow as tf
import torch
import numpy as np
import math
def cal_dist(a,b):
ans = 0
print(a,b)
for x,y in zip(a,b):
ans += (x-y)**2
return math.sqrt(ans)
def get_distance(x,y):
dist = []
for data_x in x:
tmp = []
for data_y in y:
tmp.append(cal_dist(data_x,data_y))
dist.append(tmp)
return dist
if __name__ == '__main__':
m, n, d = 3, 2, 2
x = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([[2, 3], [4, 5]])
x_ = np.repeat(x,n,0)
x_ = x_.reshape([m,n,d])
print(x_-y)
dist_np = np.sqrt(np.sum(np.square((x_-y)),axis=-1))
dist_np2 = np.linalg.norm(x_ - y,axis=-1,ord=2)
dist = get_distance(x,y)
print(dist_np)
print(dist_np2)
print(dist)
print(np.argmin(dist_np,axis=-1))
print(np.argmin(dist_np2,axis=-1))
print(np.argmin(dist_np,axis=-1))
#sprt(((x1-y1)**2+(x2-y2)**2))