前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 对矩阵进行复制操作 np.repeat 与 np.tile区别

python 对矩阵进行复制操作 np.repeat 与 np.tile区别

作者头像
学到老
发布2018-04-02 14:42:27
5K0
发布2018-04-02 14:42:27
举报
文章被收录于专栏:深度学习之tensorflow实战篇

python 对矩阵进行复制操作 np.repeat 与 np.tile区别

二者区别

二者执行的是均是复制操作; np.repeat:复制的是多维数组的每一个元素;axis来控制复制的行和列 np.tile:复制的是多维数组本身; import numpy as np 通过help 查看基本的参数 help(np.repeat) help(np.tile)

案例对比
np.repeat
代码语言:javascript
复制
x = np.arange(1, 5).reshape(2, 2)
print(x)
[[1 2]
 [3 4]]
print(np.repeat(x, 2))
[1 1 2 2 3 3 4 4]

对数组中的每一个元素进行复制 除了待重复的数组之外,只有一个额外的参数时,高维数组也会 flatten 至一维

代码语言:javascript
复制
c = np.array([1,2,3,4])
print(np.tile(c,(4,2)))
[[1 2 3 4 1 2 3 4]
 [1 2 3 4 1 2 3 4]
 [1 2 3 4 1 2 3 4]
 [1 2 3 4 1 2 3 4]]

当然将高维 flatten 至一维,并非经常使用的操作,也即更经常地我们在某一轴上进行复制,比如在行的方向上(axis=1),在列的方向上(axis=0):

代码语言:javascript
复制
print(np.repeat(x, 3, axis=1))
[[1 1 1 2 2 2]
 [3 3 3 4 4 4]]
print(np.repeat(x, 3, axis=0))
[[1 2]
 [1 2]
 [1 2]
 [3 4]
 [3 4]
 [3 4]]

当然更为灵活地也可以在某一轴的方向上(axis=0/1),对不同的行/列复制不同的次数:

代码语言:javascript
复制
print(np.repeat(x, (2, 1), axis=0))
[[1 2]
 [1 2]
 [3 4]]
print(np.repeat(x, (2, 1), axis=1))
[[1 1 2]
 [3 3 4]]
np.tile

python numpy 下的 np.tile有些类似于 matlab 中的 repmat函数。不需要 axis 关键字参数,仅通过第二个参数便可指定在各个轴上的复制倍数。

代码语言:javascript
复制
a = np.arange(3)
print(a)
[0 1 2]
print(np.tile(a, 2))
[0 1 2 0 1 2]
print(np.tile(a, (2, 2)))
[[0 1 2 0 1 2]
 [0 1 2 0 1 2]]

第二个参数便可指定在各个轴上的复制倍数。

代码语言:javascript
复制
b = np.arange(1, 5).reshape(2, 2)
print(b)
[[1 2]
 [3 4]]
print(np.tile(b, 2))
[[1 2 1 2]
 [3 4 3 4]]
print(np.tile(b, (1, 2)))
[[1 2 1 2]
 [3 4 3 4]]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年03月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二者区别
  • 案例对比
    • np.repeat
      • np.tile
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档