Numpy实现两个矩阵欧式距离最小下标返回

 需要注意两个矩阵维度不同的时候,不可以直接做减运算,需要对某个矩阵扩增维度,然后求和降维

# -*- 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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值