np.tile()和np.repeat()的区别和使用方法(numpy复制数组的行、列、元素)

np.tile()和np.repeat()都可以对array进行重复操作,
但np.tile()是以axis为最小单位(axis-wise)进行重复的,
而np.repeat()是以element为最小单位(element-wise)进行重复的 
(这段参考:np.tile()和np.repeat()_littlehaes的博客-CSDN博客)

一、np.tile()

1、函数原型

numpy.tile(A, reps)   # 来自于官方文档

### Construct an array by repeating A the number of times given by reps.

官方文档: numpy.tile — NumPy v1.23 Manual

输入:
A:np.ndarray,
reps:对应的英文单词为repeats,是个list,reps表示对A的各个axis进行重复的次数

返回:
返回一个数组,维度的数量等于max(A.ndim, len(reps)),注意不要混淆A.ndim和A.shape

  1. 当A.ndim < len(reps)时,  此时需要调整A的维度使得A.ndim = len(reps)
  2. 当A.ndim > len(reps)时, 此时需要增加list的长度, 使得A.ndim = len(reps)

2、官方例子: 

例子1、

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

例子2、

b = np.array([[1, 2], [3, 4]])

np.tile(b, 2)  # 根据上面的解释,就是[2]广播成了[1, 2]
返回:
array([[1, 2, 1, 2],
       [3, 4, 3, 4]])

np.tile(b, (2, 1))
返回:
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])

例子3、

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

二、np.repeat()

1、函数原型

numpy.repeat(a, repeats, axis=None)   # 来自官方文档

#### Repeat elements of an array. (这里可以看出repeat()的最小单位的确是element)

官方文档:numpy.repeat — NumPy v1.23 Manual 

输入:
a:数组(Input array.)
repeats:各个元素重复的次数, 在axis的方向上进行重复。
repeats is broadcasted to fit the shape of the given axis.:repeats会自动进行广播)
axis:指定沿着哪个轴进行repeat。不指定axis的情况下,会将输入的a数组进行flatten,然后在flatten后的数组上进行repeat。

2、官方例子

例子1、

np.repeat(3, 4)
返回:
array([3, 3, 3, 3])

x = np.array([[1,2],[3,4]])
np.repeat(x, 2)
返回:
array([1, 1, 2, 2, 3, 3, 4, 4])

x = np.array([[1,2],[3,4]])
np.repeat(x, 3, axis=1)
返回:
array([[1, 1, 1, 2, 2, 2],
       [3, 3, 3, 4, 4, 4]])

例子2、

x = np.array([[1,2],[3,4]])
np.repeat(x, [1, 2], axis=0)
返回:
array([[1, 2],
       [3, 4],
       [3, 4]])

这个比较特殊:

其是再axis=0这个维度(即,行这个维度)上,第一行重复1次,第二行重复2次。

例子3、 

这个用的比较多一些
使用np.tile()会更简单一些

x = np.array([[1,2,3,4]])  # 必须将其变成shape为(1, n),即必须增加1这个维度
np.repeat(x, [3], axis=0)
返回:
array([[1, 2, 3, 4],
       [1, 2, 3, 4],
       [1, 2, 3, 4]])

你可能感兴趣的:(numpy,Python,numpy,python,机器学习)