文档原文是这么写的:
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类型。