详解numpy的repeat和tile 用来复制数组

本文详细解析了NumPy中repeat和tile函数的区别与用法,repeat适用于元素级复制,而tile则用于整体数组的复制。通过实例展示了如何指定复制次数和维度,帮助读者掌握高效的数组操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

repeat和tile都可以用来复制数组的,但是有一些区别
关键区别在于repeat是对于元素的复制,tile是以整个数组为单位的 ,repeat复制时元素依次复制,注意不要用错,区别类似于[1,1,2,2]和[1,2,1,2]

repeat

用法

np.repeat(a, repeats, axis=None)

重复复制数组a的元素,元素的定义与axis有关,axis不指定时,数组会被展开进行复制,每个元素就是一个值,指定axis时,就是aixis指定维度上的一个元素

a = np.array([[1,2], 
                      [3,4]])
  • 不指定axis,默认None,这时候数组会被展开成1维,再进行复制
np.repeat(a, 2)  # 所有元素依次复制相同的次数

运行结果
参数是列表

np.repeat(a, [1, 2, 1, 2])  # 如果第二个参数是列表,列表长度必须和a的复制可选元素数目相等,这里都是4

在这里插入图片描述

  • 指定axis
    指定时,就是指定了复制元素沿的维度,这时候就不会把数组展平,会维持原来的维度数
np.repeat(a, 2,  axi=0)  # 所有沿着0维的元素依次复制相同的次数

结果

np.repeat(a, [1, 2], axis=1)  # 第二个参数是列表,列表长度必须和a的复制可选元素数目相等,这里是2

结果如下,复制元素从第1维度算,可以看到第一列被复制了一次,第二列被复制了两次
结果

tile

用法

np.tile(a, repeats)

复制数组,repeats可以是整数或者元组、数组

  • repeats是整数
    示例如下,它会将数组复制两份,并且在最后一维将两个元素叠加在一起,数组的维数不变,最后一维根据复制次数加倍
    结果
  • repeats是列表或元组
    如果列表长度是1,和整数时相同。
    列表长度不为1时,列表从后向前看,最后一项是2,所以复制两个数组,在最后一维进行叠加,倒数第二项是3,将前步的结果进行复制,并在倒数第二维,结果如下

结果

当列表的长度超过数组的维数时,和前面类似,从后向前复制,复制结果会增加维度与列表的维数匹配,结果如下,在上面的基础上,增加了一维
在这里插入图片描述
复制结果的shape
在这里插入图片描述
但是对于 简单的单个数组重复,个人更喜欢使用stack和concatenate将同一个数组堆叠起来
参考:numpy的stack、hstack、vstack、concatenate区别及使用建议

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值