repeat函数的作用:①扩充数组元素 ②降低数组维度
numpy.repeat(a, repeats, axis=None):若axis=None,对于多维数组而言,可以将多维数组变化为一维数组,然后再根据repeats参数扩充数组元素;若axis=M,表示数组在轴M上扩充数组元素。
下面以3维数组为例,了解下repeat函数的使用方法:
In [1]: import numpy as np
In [2]: arr = np.arange(12).reshape(1,4,3)
In [3]: arr
Out[3]:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]]])
①repeats为整数N,axis=None:数组arr首先被扁平化,然后将数组arr中的各个元素
依次重复N次
In [4]: arr.repeat(2)
Out[4]:
array([ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
8, 9, 9, 10, 10, 11, 11])
②repeats为整数数组rp_arr,axis=None:数组arr首先被扁平化,然后再将数组arr中元素依次重复对应rp_arr数组中元素对应次数。若rp_arr为一个值的一维数组,则数组arr中各个元素重复相同次数,否则rp_arr数组长度必须和数组arr的长度相等,否则报错
a:rp_arr为单值一维数组,进行广播
In [5]: arr.repeat([2])
Out[5]:
array([ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
8, 9, 9, 10, 10, 11, 11])
b:rp_arr长度小于数组arr长度,无法进行广播,报错
In [6]: arr.repeat([2,3,4])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-d3b52907284c> in <module>()
----> 1 arr.repeat([2,3,4])
ValueError: operands could not be broadcast together with shape (12,) (3,)
c:rp_arr长度和数组arr长度相等
In [7]: arr.repeat(np.arange(12))
Out[7]:
array([ 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6,
6, 6, 6, 6,