Python-Numpy库中的tile()函数详解

简介

tile()函数是在Python的numpy.lib.shape_base库中,其功能是平铺所给的数组。

  • 注意:使用前需import numpy

import库或模块的三种方法(以numpy库为例)

  • import numpy
    说明:import整个numpy库,在import时简单,但使用时麻烦,其缺点在于:
    1、调用整个库或模块浪费时间和资源,尤其是需要多个库或模块支撑时。
    2、在使用其中的函数使需要有numpy.来限定,否则会报错,如 numpy.tile()
  • from numpy import *
    说明:import numpy库中的任意函数,*为通配符,与上一种方式的不同之处在于不需要库名来限定(常用这种方法)
  • from numpy import tile
    说明:仅仅import numpy库中的tile()函数

格式

  • tile(A, reps)
  • A:输入的数组(array)
  • reps:数组A重复的次数;可以有两种形式(数字和二维元组)
    tile的本意有“铺以瓷砖,铺以瓦”的意思,即将数组视为瓷砖,在一个平面上将此数组平铺开来(数字对应一维,元组对应二维 tuple(纵铺个数,横铺个数)

返回值

返回平铺后的数组(array)

举例

我们先给定一个2维数组

from numpy import *

c = array([[1,2],[3,4]])
print(c)

Output:
[[1 2]
 [3 4]]

1、横向平铺

print(tile(c,4))
#等效为print(tile(c,(1,4)))

Output:
[[1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]]

在这里插入图片描述

2、纵向平铺

print(tile(c,(3,1)))

Output:
[[1 2]
 [3 4]
 [1 2]
 [3 4]
 [1 2]
 [3 4]]

在这里插入图片描述

3、横向纵向平铺

print(tile(c,(3,4)))

Output:
[[1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]
 [1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]
 [1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]]

在这里插入图片描述

机器学习实例

  • kNN中,在计算距离时,需要用到此函数来对目标向量进行扩展,进而得到与各个实例的差值数组(代码来自《机器学习实战》-Ch2)
    diffMat = tile(inX, (dataSetSize,1)) - dataSet
def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]#读取数据集第一维度的长度,即行数。
    #计算距离
    diffMat = tile(inX, (dataSetSize,1)) - dataSet#目标向量与dataSet的差值数组
    sqDiffMat = diffMat**2 # ** 为指数表达式pow
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()

参考

1、图解Numpy的tile函数
2、《机器学习实战》


版权声明:本文为weixin_41998772原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。