np.tile 是将整个数组重复多次,np.repeat 是将数组中的每个元素重复。
np.tile
使用 np.tile(array, reps) 请尽量让 reps 为整数,或者使得 array 的维度和 reps 的尺寸一致,这样结果更加直观。
即:若 array 尺寸为 (2, 3, 4),则 reps 尽量为三元素向量形如 (1, 1, 2)
1
2
| a = np.array([0, 1, 2])
np.tile(a, 2)
|
1
| array([0, 1, 2, 0, 1, 2])
|
1
2
| b = np.array([[0], [1], [2]])
np.tile(b, (2, 3))
|
1
2
3
4
5
6
| array([[0, 0, 0],
[1, 1, 1],
[2, 2, 2],
[0, 0, 0],
[1, 1, 1],
[2, 2, 2]])
|
np.repeat
axis=None
使用 numpy.repeat(a, reps, axis=None),若 axis=None 则一定返回压扁的一维向量
1
2
3
| x = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(np.repeat(x, 2))
print(np.repeat(x, [2, 1, 3, 3, 1, 1, 1, 1]))
|
1
2
| [1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8]
[1 1 2 3 3 3 4 4 4 5 6 7 8]
|
指定 axis
若指定 axis,必须让 reps 为整数,或者使得 array 该维的尺寸的和 reps 的尺寸一致,这样结果更加直观。
即:若 array 尺寸为 (2, 3, 4),axis=1,则改维度上尺寸为 3,reps 必须为三元素向量形如 (1, 1, 2)
1
| print(np.repeat(x, 2, axis=0))
|
1
2
3
4
5
6
7
8
9
10
11
| [[[1 2]
[3 4]]
[[1 2]
[3 4]]
[[5 6]
[7 8]]
[[5 6]
[7 8]]]
|
1
| print(np.repeat(x, 2, axis=1))
|
1
2
3
4
5
6
7
8
9
| [[[1 2]
[1 2]
[3 4]
[3 4]]
[[5 6]
[5 6]
[7 8]
[7 8]]]
|
1
| print(np.repeat(x, 2, axis=2))
|
1
2
3
4
5
| [[[1 1 2 2]
[3 3 4 4]]
[[5 5 6 6]
[7 7 8 8]]]
|
1
| print(np.repeat(x, (2, 1), axis=1))
|
1
2
3
4
5
6
7
| [[[1 2]
[1 2]
[3 4]]
[[5 6]
[5 6]
[7 8]]]
|