1.函数的定义与说明

tile函数是模板numpy.lib.shape_base中的函数。

函数的形式是tile(A,reps)

函数参数说明中提到A和reps都是array_like的,什么是array_like的parameter呢?在网上查了一下,始终搞不明白,便把熟悉的python数据类型都试了一下,得出以下结论。

A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以及bool类型。

reps的类型也很多,可以是tuple,list, dict, array, int,bool.但不可以是float, string, matrix类型。

假定A的维度为d,reps的长度为len

当d>=len时,将reps长度补足为d,即在reps前面加上d-len个1。

这里的意思是,假设A为k维数组,每一维都有一定长度,构成的向量为D。

而长度为len的reps有len个数,进行tile函数运算时补足d位,前面加d-len个1,如下图所示:

经过tile运算,生成新的A,A的各维维度为:

其中相乘的意思为,将原来A中每一维度的元素进行copy,生成的A中此元素出现次数为新的reps对应维度的数目。操作从低维度向高维进行。

当d

2.函数操作示例

首先给几个示例:

>>> tile(1.3,2)

array([ 1.3,  1.3])

array([1, 2, 1, 2, 1, 2])

>>> tile((1,2,3),2)

array([1, 2, 3, 1, 2, 3])

>>> a=[[1,2,3],[4,5,5]]

>>> tile(a,2)

array([[1, 2, 3, 1, 2, 3],

[4, 5, 5, 4, 5, 5]])

>>> tile([1,2,3],[2,2,2,2])

array([[[[1, 2, 3, 1, 2, 3],

[1, 2, 3, 1, 2, 3]],

[[1, 2, 3, 1, 2, 3],

[1, 2, 3, 1, 2, 3]]],

[[[1, 2, 3, 1, 2, 3],

[1, 2, 3, 1, 2, 3]],

[[1, 2, 3, 1, 2, 3],

[1, 2, 3, 1, 2, 3]]]])

拿其中一个例子进行说明:

>>> a=[[1,2],[2,3]]

>>> tile(a,2)

array([[1, 2, 1, 2],

[2, 3, 2, 3]])

这里a的维度为2,reps长度为1(仅仅是1个int类型数据)

则将reps长度补足为2,结果为reps = [1,2](这里也可以写成reps=(1,2),都无妨的)

进行copy操作,从低维进行.数组a为a[2][2]

一维copy操作:copy两次。a[0]变为[1,2,1,2],a[1]变为[2,3,2,3]

二维copy操作,copy1次。a变为[[1,2,1,2],[2,3,2,3]]

a数组为a[2][4]

如此则不难理解下面的结果:

>>> tile(a,[1,2])

array([[1, 2, 1, 2],

[2, 3, 2, 3]])

>>> tile(a,[2,2])

array([[1, 2, 1, 2],

[2, 3, 2, 3],

[1, 2, 1, 2],

[2, 3, 2, 3]])

tile(a,[2,2])中是将上述第二步的对a的第二维的copy次数变成了两次,a[0]copy两次,a[1]copy两次:[a[0],a[0],a[1],a[1]]结果如上所示。

3.函数其他注意事项

①当reps为bool类型或者是bool list类型的时候,与int类型相对应,即True对应为1,False对应为0.如:

>>> tile([1,2],[True,False])

array([], shape=(1, 0), dtype=int32)

>>> tile([1,2],[True,True])

array([[1, 2]])

>>> tile([1,2],[True,True,True])

array([[[1, 2]]])

>>> tile([1,2],True)

array([1, 2])

②当reps为dict类型时,实则取的是key值列表,且key值列表为升序排列如下所示:

>>> tile([1,2,3],{1:2,3:4})

array([[1, 2, 3, 1, 2, 3, 1, 2, 3]])

>>> tile([1,2,3],{3:4,1:2})

array([[1, 2, 3, 1, 2, 3, 1, 2, 3]])

>>> a={1:2,3:4}

>>> tile([1,2,3],a.keys())

array([[1, 2, 3, 1, 2, 3, 1, 2, 3]])

③当A为int,string,float,bool,dict等类型的时候,操作大体相似,都是讲A视为一个整体,生成一个与reps的长度相同维度的数组。如下所示:

>>> tile({1:2,3:4,5:6},3)

array([{1: 2, 3: 4, 5: 6}, {1: 2, 3: 4, 5: 6}, {1: 2, 3: 4, 5: 6}], dtype=object)

>>> tile({1:2,3:4,5:6},[2,2])

array([[{1: 2, 3: 4, 5: 6}, {1: 2, 3: 4, 5: 6}],

[{1: 2, 3: 4, 5: 6}, {1: 2, 3: 4, 5: 6}]], dtype=object)

>>> tile('abc',3)

array(['abc', 'abc', 'abc'],

dtype='|S3')

>>> tile('abc',[3,3])

array([['abc', 'abc', 'abc'],

['abc', 'abc', 'abc'],

['abc', 'abc', 'abc']],

dtype='|S3')

>>> tile(2,3)

array([2, 2, 2])

>>> tile(2,[3,3])

array([[2, 2, 2],

[2, 2, 2],

[2, 2, 2]])

不过有所不同的是,当A为string类型以及dict类型的时候,array数组最后多了一个信息,即dtype,原因为何,即便看了一些源码,也不晓得是怎么回事,好像由array到ndarray,一大堆C的东西,搞不明白,索性作罢。另外,当对list类型进行mat操作然后作为参数A传入tile时也可以,不过结果类型不是array类型,而是matrix类型了,原因几何,我也无法解答。

看了tile的源码以后以上内容差不多都可以理解。例如之所以reps的类型有限制,在于代码一开始对reps进行了以下操作:

tuple(reps),无法进行该操作的reps参数就会报错。而且dict类型的reps进行tuple化以后,key值以升序出现,这也是注意事项中2的原因,而list和tuple类型的数值顺序不变。

原文链接:http://blog.sina.com.cn/s/blog_6bd0612b0101cr3u.html

Numpy的tile函数相关推荐

  1. 图解Numpy的tile函数

    Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: mat = array([[1,2], [ ...

  2. Numpy:np.tile()函数

    Numpy:np.tile函数 np.arange()函数 np.tile()函数 np.arange()函数 np.arange()函数返回的是一个有终点和起点的固定步长的排列,其中np.arang ...

  3. numpy中tile函数

    tile函数位于python模块numpy.lib.shape_base中,他的功能是重复某个数组. 函数的形式是tile(A,reps) 函数参数说明中提到A和reps都是array_like的,什 ...

  4. Numpy中tile函数的用法

    tile函数的功能是重复某个数组,位于Numpy模块numpy.lib.shape_base中 下边通过具体例子来说明tile函数的具体用法: 1.通过一个数字来说明重复的次数 #!/usr/bin/ ...

  5. Numpy中 tile函数的用法

    titl函数: a=arange(1,3) #a的结果是: array([1,2]) 1,当 tile(a,1) 时: tile(a,1) #结果是 array([1,2])tile(a,2) #结果 ...

  6. python中tile的用法_Python:numpy中的tile函数

    在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...

  7. numpy 中 tile 的用法

      Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: mat = array([[1,2], ...

  8. Python中numpy中tile和repeat用法和区别

    tile tile(数组,重复次数) tile(数组,(第1维重复次数,第2维重复次数,-,第n维重复次数)) 例子 tile(数组,(沿着第1维的轴重复次数,沿着第2维的轴重复次数,-,沿着第n维的 ...

  9. 【Python】Numpy扩充数组函数之repeat和tile用法

    2019独角兽企业重金招聘Python工程师标准>>> [Python]Numpy扩充数组函数之repeat和tile用法,有需要的朋友可以参考下. 用repeat和tile扩充数组 ...

最新文章

  1. VS2019使用说明
  2. 解决git提示Permission denied (publickey)
  3. linux使关机命令失效,解决Linux系统在设置alias命令重启后失效的问题
  4. 2G、3G即将退出群聊;全国携号转网就要实现了;5G商用列车已发车...
  5. HYSBZ 1406 密码箱【数学】
  6. 云计算第二天总结 10.29
  7. ADSL共享上网(简单方法)
  8. 程序员成功之路 ——The road ahead for programmer(演讲稿)
  9. 首届“梧桐杯”大数据应用创新大赛复赛晋级名单发布
  10. xc7k325tffg900芯片手册_XC7K325TFFG900_Spartan-3【太航半导体】闻喜县
  11. ZYNQ7000 学习(三十) 定时器终端的原理和实现
  12. Zabbix-agent部署
  13. win7电脑远程桌面连接提示已停止工作,但电脑没有蓝牙,不是受蓝牙影响,且影响电脑卡顿必须重启故障模块名称:StackHash_e1f3
  14. U盘插入电脑提示格式化怎么办
  15. mt4支持python么_py-mt4
  16. #arcgis 中无法连接mdb数据库解决方法
  17. 如果你需要用Python搞个二维码,那应该收藏这篇博客
  18. DTV 学习(三) 数字视频广播-DVB
  19. 运维实践 | 运维打工人必备 CentOS-Linux/Stream-8 服务器系统基础安装与配置实践...
  20. linux .bashrc文件误操作后如何恢复

热门文章

  1. 快手之家(aardio.net) - 感谢信
  2. 人类一败涂地怎么正在连接服务器,人类一败涂地联机显示正在连接服务器解决办法...
  3. 死区4个状态分析,以及死区时间计算
  4. 用户计算机脱域了如何处理,AD域计算机经常脱域
  5. Rose出现 “relation from A to B would cause an Invalid circular inheritance解决方法。
  6. 【...】12306官网购买指定铺位的车票
  7. moses 编译_Ubuntu 8.10下moses测试平台搭建全记录
  8. python可以自动拆分表格吗_如何利用Python一键拆分表格并进行邮件发送~
  9. 【python入门小知识】实现人名全大写,全小写,首字母大写
  10. Calcite执行计划的四种展示格式