Numpy中的tile()函数用法详解

>>> from numpy import *
>>> tile([1,2],1)
array([1, 2])
>>> tile([1,2],2)
array([1, 2, 1, 2])

上例中,只有一个参数,只向一个维度复制,横向的,或者说在行方向上进行复制

下例有两个参数,向两个维度复制,也就是同时向行方向和列方向进行复制

>>> tile([1,2],(1,1))
array([[1, 2]])
>>> tile([1,2],(2,2))
array([[1, 2, 1, 2],
       [1, 2, 1, 2]])
可以看出,tile()函数内括号中的参数代表扩展后的维度,而扩展是通过复制A来运作的,最终得到一个与括号内的参数(reps)维度一致的数组(矩阵)

注:tile(A, reps)

来看一下官方给的例子

 Examples
    --------
    >>> a = np.array([0, 1, 2])
    >>> 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]]) #向两个维度扩展【行方向(横向)与列方向(纵向)】
    >>> np.tile(a, (2, 1, 2))
    array([[[0, 1, 2, 0, 1, 2]],
           [[0, 1, 2, 0, 1, 2]]])#向3个维度扩展,与二维的不同在于reps的第一个参数代表扩展几块,这里是2块,第二和第三个参数才代表扩展后的维度(有几行,有几列)
    
    >>> b = np.array([[1, 2], [3, 4]])
    >>> np.tile(b, 2) #b是一个整体元素,这里在一维上进行扩展,也就是横向复制
    array([[1, 2, 1, 2],
           [3, 4, 3, 4]]) 
    >>> np.tile(b, (2, 1))#b是一个整体元素,在行方向上由1个复制为2个,列方向为1,所以不复制
    array([[1, 2],
           [3, 4],
           [1, 2],
           [3, 4]])
    
    >>> c = np.array([1,2,3,4])
    >>> np.tile(c,(4,1))
    array([[1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4]])

再来多试几个向3个维度扩展的例子:

>>> from numpy import *
>>> tile([0,1,2],(2,1,2))
array([[[0, 1, 2, 0, 1, 2]],

       [[0, 1, 2, 0, 1, 2]]])   #2块,行方向为1,不放在;列方向为2,复制1次,以下同理
>>> print tile([0,1,2],(2,1,2))
[[[0 1 2 0 1 2]]

 [[0 1 2 0 1 2]]]
>>> tile([0,1,2],(2,2,2))
array([[[0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2]],

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

       [[0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2]]])
>>> tile([0,1,2],(2,4,2))
array([[[0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2]],

       [[0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2]]])


  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值