>>> 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]]])