np.tile()函数和np.repeat()函数

在jupyter notebook 中同时输入多行

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

np.tile(A, reps)

通过重复A代表次数来构造一个数组。

参数

  • A :输入数组
  • reps: 沿每个轴的“ A”重复次数。

返回值

平铺的输出数组
有两种特殊情况:

  • A.ndim < len(reps), 此时需要调整A的维度使得A.ndim = len(reps),即添加长度为1的维度,注意:新的维度在原维度的前面,比如原来的A.shape是(3,5),调整后是(1,3,5)
  • A.ndim > len(reps), 此时需要增加list的长度,使得A.ndim = len(reps),即在reps的最前面增加元素1,比如原来的list是[2,2],增加长度后是[1,2,2]

实例一

a = np.array([0, 1, 2])

# 沿axis=0重复2次
np.tile(a, 2)      #  array([0, 1, 2, 0, 1, 2])

# 将a.shape调整至(1,3),然后将axis=0重复2次,将axis=1重复2次
np.tile(a, (2, 2))    #  array([[0, 1, 2, 0, 1, 2], [0, 1, 2, 0, 1, 2]])

# 将a.shape调整至(1,1,3),然后将axis=0重复2次,将axis=1重复1次,将axis=2重复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]])

# 将reps=[2]调整至[1,2],然后将axis=0重复1次,将axis=1重复2次
np.tile(b, 2)      # array([[1, 2, 1, 2],   [3, 4, 3, 4]])

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

c = np.array([1,2,3,4])
# 将c.shape调整至(4,1),然后将axis=0重复4次,将axis=1重复1次
np.tile(c,(4,1))
# array([[1, 2, 3, 4],
#        [1, 2, 3, 4],
#        [1, 2, 3, 4],
#        [1, 2, 3, 4]])

np.repeat(a, repeats, axis=None)

重复数组的元素。

参数

  • a :输入数组
  • repeats : int或int数组,每个元素的重复次数。
  • axis : 沿着那个轴重复

返回值

如果不指定axis,则将重复后的结果展平(维度为1)后返回;如果指定axis,则不展平

# 未指定axis,输出结果展平
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])

# 指定axis,输出结果不展平
np.repeat(x, 3, axis=1)
# array([[1, 1, 1, 2, 2, 2],
#        [3, 3, 3, 4, 4, 4]])

# 沿着axis=0方向重复,将axis=0方向上的第0个元素重复1次,第1个元素重复2次
np.repeat(x, [1, 2], axis=0)
# array([[1, 2],
#        [3, 4],
#        [3, 4]])

你可能感兴趣的:(#,numpy)