Numpy之tile用法

numpy.tile(A, reps)

文档原文是这么写的:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html

我翻译了一下,这函数意思就是:
1、通过重复reps次A来构造出一个新数组。
例如:

>>> import numpy as np
>>> a = np.array([0, 1, 2])
>>> np.tile(a, 2)
array([0, 1, 2, 0, 1, 2])

2、如果参数reps存在长度 d = len(reps) 的话,那么函数返回的新数组的维数就是 max(d, A.ndim)
即:

如果 A.ndim < d 的话,A就会通过加上新的轴来提升到d维,因此,一个shape(3,) 的数组就会被提升到(1, 3) 成为2维复制品,或者被提升到(1, 1, 3) 成为3维复制品。如果这不是期望的行为,那就在调用这个函数之前手动把A提升到d维。

如果 A.ndim > d 的话,reps就会通过在最前面加多个1来提升到A.ndim 维。因此,当A的shape(2, 3, 4, 5) 时,为(2, 2) 的reps就会被处理成(1, 1, 2, 2) 然后再参与函数计算,返回的新数组的shape应该是(2, 3, 8, 10)

举个例子:

>>> 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]]])
>>> np.tile(a, (2,3,4))
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],
        [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
        [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]]])
#x是一个一维数组
>>> x = array([3])
>>> x.shape
(1,)

#x.ndim < d,x的维度小于reps的长度,所以y应该是一个4维的数组
>>> y = tile(x, (2,3,4,5))
>>> y.shape
(2, 3, 4, 5)

#y.ndim > d,y的维度小于reps的长度,所以z应该是一个4维的数组
>>> z = tile(y, (2,2))  
>>>z.shape
(2, 3, 8, 10)

下面我们说一下函数参数,参数就俩,A和reps。A和reps都是array_like。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值