将数组展平仅一层?

Cup*_*tor 4 python arrays numpy

是否有任何内置的numpy函数可以得到:

a=np.asarray([[[1,2],[3,4]],[[1,2],[3,4]]])
Run Code Online (Sandbox Code Playgroud)

并会回来:

b=[[1,2],[3,4],[1,2],[3,4]]
Run Code Online (Sandbox Code Playgroud)

?像一层扁平化的东西.

PS我正在寻找一个矢量化选项,否则这个哑代码可用:

flat1D(a):
   b=np.array([])
   for item in a:
      b=np.append(b,item)
   return b
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 8

您可以简单地重塑阵列.

>>> a.reshape(-1,a.shape[-1])
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])
Run Code Online (Sandbox Code Playgroud)

显示的代码返回一维数组,为此:

>>> a.ravel()
array([1, 2, 3, 4, 1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

或者,如果您确定要复制数组:

>>> a.flatten()
array([1, 2, 3, 4, 1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

ravel和flatten之间的区别主要来自flatten将始终返回副本的事实,ravel将返回视图(如果可能),如果不是则返回副本.