是否有任何内置的 numpy 函数可以获得:
a=np.asarray([[[1,2],[3,4]],[[1,2],[3,4]]])
并会返回:
b=[[1,2],[3,4],[1,2],[3,4]]
? 像一层展平之类的东西。
PS我正在寻找一个矢量化选项,否则这个愚蠢的代码是可用的:
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]])
显示的代码返回一维数组,以执行此操作:
>>> 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 如果可能会返回一个视图,如果没有则返回一个副本。
如果您知道新数组的维度,则可以将它们指定为元组(4,2)
并使用.reshape()
a.reshape((4,2))