Numpy tile函数

最近在入门机器学习,看到《机器学习实战》一书中经常出现numpy.tile()函数。于是记录下这个函数的用法。
虽然看过了网上不少大佬的文章,但还是认为看官方的纯英文文档理解得好(尽管现在英文水平不行)。

函数原型: Numpy.tile(A,reps)
其中A和reps都是array_like的参数,A可以是array,list,tuple,matrix以及基本数据类型;reps的类型可以是tuple,list,dict,array,int,bool。

以机器学习实战中的kNN算法代码为例

 def classify0(inX,dataSet,labels,k):    #分类器(搞懂函数后,总算对这个代码有所理解)
    dataSetSize = dataSet.shape[0]  #shape[0]返回矩阵第一维度的长度
    diffMat = tile(inX,(dataSetSize,1))-dataSet  #按行复制,将输入向量扩展到和dataset一样的函数,再减去dataset
    #输入向量inX在行复制dataSetSize次,列复制一次
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1) #按行相加求和
    distances = sqDistances**0.5    #距离计算
    sortedDistIndicies = distances.argsort()  #argsort()排序后,返回下标向量
    classCount={}  #初始化一个字典,也就是C++的map
    for i in range(k):  #通过循环,依次求出前k个距离的下标,映射到labels,找出对应分类
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0)+1  #字典:{'标签':出现次数}
        #返回指定键的值,如果值不在字典就返回默认值
        #选择距离最小的k个点
    sortedClassCount = sorted(classCount.items(),#Python3已经不支持iteritems()
                              key=operator.itemgetter(1),
                              reverse=True)
    #第一个参数可以为list、iterator.第二个参数为cmp函数(指定排序时进行比较的函数)
    #第三个参数key为函数,指定取待排序元素的哪一项进行排序.第四个参数reverse选择升序还是降序
    #false为升序(默认)
    #排序
     return sortedClassCount[0][0]

diffMat = tile(inX,(dataSetSize,1))-dataSet
表示把输入向量inX复制(dataSetSize行,1列)次
按列扩展为原来的2倍 横向扩展为原来为的2倍(按列复制)
行列均扩展为原来的2倍 横向、纵向均扩展为原来的2倍(按行、列扩展)
三个维度进行扩展,暂时没用过 三个维度的进行扩展,第一个参数代表的是几块

看到有位博主写的关于tile()函数方法的介绍不错,附上链接
https://blog.csdn.net/qq_38669138/article/details/79085700
numpy官方关于tile()函数的英文技术文档链接
https://docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值