向量化操作

向量化操作:
向量化操作是指利用数组操作而不是显式的循环来进行计算,这样可以充分利用底层优化和并行处理,从而提高计算效率。
例如这一段代码

num_test = X.shape[0]
num_train = self.X_train.shape[0]
dists = np.zeros((num_test, num_train))
for i in range(num_test):
    #######################################################################
    # TODO:                                                               #
    # Compute the l2 distance between the ith test point and all training #
    # points, and store the result in dists[i, :].                        #
    # Do not use np.linalg.norm().                                        #
    #######################################################################
    # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

    dists[i] = np.sum((X[i] - self.X_train)**2, axis=1)**0.5

    # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

假设我们有如下的示例:

# 测试数据集(2个样本,每个样本有2个特征)
X = np.array([[1, 2], 
              [3, 4]])

# 训练数据集(3个样本,每个样本有2个特征)
self.X_train = np.array([[1, 0], 
                         [0, 1], 
                         [1, 1]])

假设 i = 0 时,测试样本是 X[0] = [1, 2]。

计算 X[0] 与所有训练样本的差值:

[[1, 2] - [1, 0], 
 [1, 2] - [0, 1], 
 [1, 2] - [1, 1]]

结果:
[[0, 2], 
 [1, 1], 
 [0, 1]]

np.sum((X[0] - self.X_train)**2, axis=1)**0.5

等价于

np.sum([[0, 2]**2, 
        [1, 1]**2, 
        [0, 1]**2], axis=1)**0.5

结果:
np.sum([[0, 4], 
        [1, 1], 
        [0, 1]], axis=1)**0.5

结果:
[4, 2, 1]**0.5

结果:
[2,2, 1]

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值