python 矩阵运算

本文介绍了如何使用Python计算矩阵中点对间的欧氏距离,并实现获取每个点的n个最近邻点的功能。通过`cal_pairwise_dist`函数计算距离,`get_n_neighbors`函数返回指定邻近邻居的索引。
摘要由CSDN通过智能技术生成

1.计算矩阵每个点与点之间的距离,返回距离矩阵

def cal_pairwise_dist(x):
    '''计算pairwise 距离, x是matrix
    (a-b)^2 + (c-d)^2= a^2 + b^2 - 2*a*b + c^2 + d^2 - 2*c*d
    '''
    x = np.array(x)
    sum_x = np.sum(np.square(x), 1)
    dist = np.add(np.add(-2 * np.dot(x, x.T), sum_x).T, sum_x)
    # 返回任意两个点之间距离的平方
    return dist


a = [[1,2],[3,4],[5,6]]
print(cal_pairwise_dist(a))
[[ 0  8 32]
 [ 8  0  8]
 [32  8  0]]

2.计算矩阵中n个邻近的点

def get_n_neighbors(data, n_neighbors=10):
    '''
    :param data: (n_samples, n_features)
    :param n_neighbors: n nearest neighbors
    :return: neighbors indexs
    '''
    dist = cal_pairwise_dist(data)
    dist[dist < 0] = 0
    dist = dist ** 0.5
    n = dist.shape[0]
    N = np.zeros((n, n_neighbors))
    print("sdf")
    for i in range(n):
        index_ = np.argsort(dist[i])[1:n_neighbors + 1]
        N[i] = N[i] + index_

    return N.astype(np.int32)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新待开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值