Numpy tile函数

    xiaoxiao2023-10-31  164

    最近在入门机器学习,看到《机器学习实战》一书中经常出现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倍(按行、列扩展) 三个维度的进行扩展,第一个参数代表的是几块

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

    最新回复(0)