博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy 辨异(四)—— np.repeat 与 np.tile
阅读量:5329 次
发布时间:2019-06-14

本文共 1145 字,大约阅读时间需要 3 分钟。

>> import numpy as np>> help(np.repeat)>> help(np.tile)
  • 二者执行的是均是复制操作;
  • np.repeat:复制的是多维数组的每一个元素
  • np.tile:复制的是多维数组本身

1. np.repeat

>> x = np.arange(1, 5).reshape(2, 2)>> np.repeat(x, 2)array([1, 1, 2, 2, 3, 3, 4, 4])        # 对数组中的每一个元素进行复制        # 除了待重复的数组之外,只有一个额外的参数时,高维数组也会 flatten 至一维

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

>> np.repeat(x, 3, axis=1)array([[1, 1, 1, 2, 2, 2],       [3, 3, 3, 4, 4, 4]])>> np.repeat(x, 3, axis=0)array([[1, 2],       [1, 2],       [1, 2],       [3, 4],       [3, 4],       [3, 4]])

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

>> np.repeat(x, (2, 1), axis=0)array([[1, 2],       [1, 2],       [3, 4]])>> np.repeat(x, (2, 1), axis=1)array([[1, 1, 2],       [3, 3, 4]])

2. np.tile

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

>> a = np.arange(3)>> np.tile(a, 2)array([0, 1, 2, 0, 1, 2])>> np.tile(a, (2, 2))array([[0, 1, 2, 0, 1, 2],       [0, 1, 2, 0, 1, 2]])>> b = np.arange(1, 5).reshape(2, 2)>> np.tile(b, 2)array([[1, 2, 1, 2],       [3, 4, 3, 4]])# 等价于>> np.tile(b, (1, 2))

转载于:https://www.cnblogs.com/mtcnn/p/9422219.html

你可能感兴趣的文章
Web服务器的原理
查看>>
小强升职计读书笔记
查看>>
常用的107条Javascript
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
elasticsearch 集群
查看>>
忘记root密码,怎么办
查看>>
linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
查看>>
《黑客与画家》 读书笔记
查看>>
bzoj4407: 于神之怒加强版
查看>>
mysql统计一张表中条目个数的方法
查看>>
ArcGIS多面体(multipatch)解析——引
查看>>
JS 在火狐浏览器下关闭弹窗
查看>>
css3渐变画斜线 demo
查看>>
UIView中的坐标转换
查看>>
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>