Python--numpy中的tile()函数
Construct an array by repeating A the number of times given by reps.
If reps
has length d
, the result will have dimension of max(d, A.ndim)
.
If A.ndim < d
, A
is promoted to be d-dimensional by prepending new axes. So a shape (3,) array is promoted to (1, 3) for 2-D replication, or shape (1, 1, 3) for 3-D replication. If this is not the desired behavior, promote A
to d-dimensions manually before calling this function.
If A.ndim > d
, reps
is promoted to A
.ndim by pre-pending 1's to it. Thus for an A
of shape (2, 3, 4, 5), a reps
of (2, 2) is treated as (1, 1, 2, 2).
Note : Although tile may be used for broadcasting, it is strongly recommended to use numpy's broadcasting operations and functions.
Parameters
A : array_like
reps : array_like
Returns
c : ndarray
See Also
repeat : Repeat elements of an array. broadcast_to : Broadcast an array to a new shape
Examples
a = np.array([0, 1, 2])
np.tile(a, 2) /*列(水平方向)重复2次 */
array([0, 1, 2, 0, 1, 2])
这里的列可以理解为a向右复制,同理,行理解为a向下复制。复制次数包括本身(即2为复制1次,加上原来的为2个)。
当参数仅1个时候(如上),默认水平方向复制。
当参数为2个时候(如下),则第一个表示行(垂直方向)复制,第二个表示会列(水平方向)复制。
np.tile(a, (3, 2)) /*行(垂直方向)重复3次,列(水平方向)重复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]],
np.tile(a, (2, 1, 2))
array([[[0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2]],
b = np.array([[1, 2], [3, 4]])
np.tile(b, 2)
array([[1, 2, 1, 2],
np.tile(b, (2, 1))
array([[1, 2],
[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]])