Python 仅展平一层阵列?

Python 仅展平一层阵列?,python,arrays,numpy,Python,Arrays,Numpy,是否有任何内置的numpy函数可以获得: a=np.asarray([[[1,2],[3,4]],[[1,2],[3,4]]]) 并将返回: b=[[1,2],[3,4],[1,2],[3,4]] ??有点像一层变平 另外,我正在寻找矢量化选项,否则此哑代码可用: flat1D(a): b=np.array([]) for item in a: b=np.append(b,item) return b 您可以简单地重塑阵列的形状 >>> a.

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

a=np.asarray([[[1,2],[3,4]],[[1,2],[3,4]]])
并将返回:

b=[[1,2],[3,4],[1,2],[3,4]]
??有点像一层变平

另外,我正在寻找矢量化选项,否则此哑代码可用:

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

您可以简单地重塑阵列的形状

>>> a.reshape(-1,a.shape[-1])
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])
显示的代码返回一个1D数组,要执行此操作:

>>> a.ravel()
array([1, 2, 3, 4, 1, 2, 3, 4])
或者,如果确定要复制阵列,请执行以下操作:

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

ravel和Flatte之间的区别主要来自这样一个事实:Flatte将始终返回一个副本,ravel将在可能的情况下返回一个视图,如果不可能,则返回一个副本。

如果您知道新数组的维度,可以将其指定为元组
(4,2)
,并使用
.reforme()


我的哑代码不起作用!:D这个答案过于平淡,没有包含任何特别有用的信息。最好在你的答案中加入你所使用的技巧和概念的解释,这样新来者也能理解它们。
a.reshape((4,2))