展平数组中的所有子数组

Flatten all subarrays in an array

我得到了一个 numpy 数组 X,其形状 (2 , 2 , 3) 如下所示:

X = [[[1 , 2 , 3 ] 
       [4 , 5 , 6]] , 
     
      [[7 , 8 , 9 ] 
       [10, 11, 12 ]],

我想展平所有子数组并将 X 变为 (2 , 6) 的形状,表示如下:

X = [[ 1 , 2 , 3 , 4, 5 , 6 ] ,
     [ 7 , 8 , 9 , 10, 11 , 12 ] ]

但是我用X.flatten()的时候,结果是这样的:

X = [ 1 , 2, 3, 4 , 5, ... , 12]

有什么函数可以帮助我按照我的意思转换数组吗?

迭代数组并展平子列表

arr = np.array([x.flatten() for x in X])

或者对于 numpy 解决方案,您也可以使用 np.hstack()

arr = np.hstack(X)

输出

print(arr)
#[[ 1  2  3  4  5  6]
# [ 7  8  9 10 11 12]]

遍历数组并展平子组件:

x = np.array([[[1,2],[3,4]], [[5,6],[7,8]]])
y = np.array([i.flatten() for i in x])
print(x)
print(y)

[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

[[1 2 3 4]
 [5 6 7 8]]

reshape.....

import numpy as np

arr = np.array([[[1 , 2 , 3 ],
       [4 , 5 , 6]],
       [[7 , 8 , 9 ],
       [10, 11, 12 ]]])


arr.reshape(2, 6)

结果:

array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])

如果它是一个 numpy 数组,你可以使用 reshape

x.reshape(2,6)

输入:

x = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]
x.reshape(2,6)

输出:

array([[ 1,  2,  3,  4,  5,  6],
   [ 7,  8,  9, 10, 11, 12]])