将数组展平仅一层?

时间:2013-10-25 21:18:29

标签: python arrays numpy

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

a=np.asarray([[[1,2],[3,4]],[[1,2],[3,4]]])

然后会回来:

b=[[1,2],[3,4],[1,2],[3,4]]

?像是一层扁平的东西。

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

flat1D(a):
   b=np.array([])
   for item in a:
      b=np.append(b,item)
   return b

2 个答案:

答案 0 :(得分:8)

您可以简单地重塑数组。

>>> a.reshape(-1,a.shape[-1])
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])

显示的代码返回一维数组,以执行此操作:

>>> a.ravel()
array([1, 2, 3, 4, 1, 2, 3, 4])

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

>>> a.flatten()
array([1, 2, 3, 4, 1, 2, 3, 4])

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

答案 1 :(得分:0)

如果你知道新数组的维度,可以将它们指定为元组On Error GoTo 5865并使用(4,2)

.reshape()