Python numpy tile 函数通过指定次数重复数组元素并构造新数组。此方法将输入数组视为一个块或片段,并在垂直和水平方向上重复指定的次数。
numpy.tile(arr, repetition)
此 Python numpy tile 方法将根据给定 ndarray 的 d 值或长度返回一维、二维、三维或多维数组。为了更好地理解,可以将给定数组的长度视为 d。
- 如果重复是一个标量值,则 arr 将重复 d 次,输出维度 = max(d, arr.ndim)。例如,如果 arr 是一维的,输出将是一维的;如果 arr 是二维的,输出将是二维的,依此类推。
- 如果 arr.ndim < d,则输出维度 = d。
- 如果 arr.ndim > d,则输出维度 = arr.ndim。
Python numpy tile 示例
在此程序中,我们声明了一个包含三个数字的数组。对于 b 变量,重复值为 2,因此 1、2 和 3 将重复两次。下一个将重复三次。
import numpy as np a = np.array([1, 2, 3]) b = np.tile(a, 2) print(b) c = np.tile(a, 3) print(c)
[1 2 3 1 2 3]
[1 2 3 1 2 3 1 2 3]
示例 2
在此示例中,我们将多个值用作瓦片重复参数。因此,下面的示例将把一维数组转换为二维和三维数组。
import numpy as np a = np.array([1, 2, 3, 4]) b = np.tile(a, (2, 2)) print(b) c = np.tile(a, (3, 2)) print(c) d = np.tile(a, (4, 1)) print(d) e = np.tile(a, (2, 1, 3)) print(e)
[[1 2 3 4 1 2 3 4]
[1 2 3 4 1 2 3 4]]
[[1 2 3 4 1 2 3 4]
[1 2 3 4 1 2 3 4]
[1 2 3 4 1 2 3 4]]
[[1 2 3 4]
[1 2 3 4]
[1 2 3 4]
[1 2 3 4]]
[[[1 2 3 4 1 2 3 4 1 2 3 4]]
[[1 2 3 4 1 2 3 4 1 2 3 4]]]
np.tile(a, (3, 2))
d = len(reps) = 2
ndim = 1
max(2, 1) = 2 = d,因此它返回一个具有 3 列的数组,并且 arr 值将重复两次。
np.tile(a, (2, 1, 3)) 表示块大小 = 2,并且每个维度都有一个单维数组。每个维度中的 ndarray 值将重复三次。
Python numpy 二维 tile
对于二维数组输入,请将二维数组视为 tile 函数的单个项目。
a, (3, 2) = 整个二维数组将垂直重复 3 次,水平重复 2 次。
np.tile(a, (2, 3, 4)) = 二维数组将转换为三维,其中块大小 = 2。在每个块中,二维数组 (a) 将垂直重复 3 次,水平重复 4 次。
import numpy as np a = np.arange(4).reshape(2, 2) print(a) b = np.tile(a, (3, 2)) print(b) c = np.tile(a, (2, 2, 3)) print(c) d = np.tile(a, (2, 3, 4)) print(d)
[[0 1]
[2 3]]
[[0 1 0 1]
[2 3 2 3]
[0 1 0 1]
[2 3 2 3]
[0 1 0 1]
[2 3 2 3]]
[[[0 1 0 1 0 1]
[2 3 2 3 2 3]
[0 1 0 1 0 1]
[2 3 2 3 2 3]]
[[0 1 0 1 0 1]
[2 3 2 3 2 3]
[0 1 0 1 0 1]
[2 3 2 3 2 3]]]
[[[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]
[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]
[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]]
[[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]
[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]
[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]]]
水平平铺
import numpy as np a = np.arange(5) b = np.tile(a, (3, 1)) print(b) c = np.arange(4).reshape(2, 2) print(c) d = np.tile(c, (4, 1)) print(d)
[[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]
[[0 1]
[2 3]]
[[0 1]
[2 3]
[0 1]
[2 3]
[0 1]
[2 3]
[0 1]
[2 3]]
垂直平铺
import numpy as np a = np.arange(5) b = np.tile(a, (4)) print(b) c = np.arange(4).reshape(2, 2) print(c) d = np.tile(c, (1, 4)) print(d)
[0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]
[[0 1]
[2 3]]
[[0 1 0 1 0 1 0 1]
[2 3 2 3 2 3 2 3]]