V1

2022/10/09阅读：25主题：默认主题

# Numpy: flatten

## numpy.flatten(order='C')

options order={'C', 'F', 'A', 'K'}

• 'C': C-style, 行为主要顺序，先从左到右，再从上到下,默认是**'C'**
• 'F': Fortran-style, 列为主要顺序，先从上到下，再从左到右
• 'A'：如果a是Fortran在内存中连续的，那么'A' 意味着以列主要顺序变平，否则按行排序
• 'F'：按照元素在内存中出现的顺序来拉平a
常用的是前两个，记录如下

### 二维数据

``import osimport numpy as np``
``# 随机生成一个2维数组，4行3列arr1 = np.random.randint(1, 10, size=[4, 3])arr1``
``````array([[9, 8, 5],
[3, 2, 5],
[8, 7, 4],
[5, 9, 2]])
``````
``# 查看数组1的维数arr1.ndim``
``````2
``````
``# 将数组arr1以行为主要顺序进行拉平降维arr2 = arr1.flatten()arr2``
``````array([9, 8, 5, 3, 2, 5, 8, 7, 4, 5, 9, 2])
``````
``# 此时查看数组arr2的维数，可以看到现在已经从2维降到了1维arr2.ndim``
``````1
``````
``arr1.shape``
``````(4, 3)
``````
``# 将数组arr1以列为主要顺序进行拉平降维arr3 = arr1.flatten(order='F')arr3``
``````array([9, 3, 8, 5, 8, 2, 7, 9, 5, 5, 4, 2])
``````
``# 查看此时的数组维度arr3.ndim``
``````1
``````

### 三维数据

``# 随机创建一个3维的数组arr4 = np.random.randint(1, 10, size=[4, 3, 3])arr4``
``````array([[[6, 7, 3],
[5, 1, 7],
[5, 4, 6]],

[[8, 5, 2],
[9, 4, 3],
[6, 9, 9]],

[[9, 9, 2],
[2, 2, 8],
[5, 5, 3]],

[[3, 1, 2],
[4, 6, 1],
[8, 3, 5]]])
``````

``# 对arr4进行以行为主就行降维arr5 = arr4.flatten()arr5``
``````array([6, 7, 3, 5, 1, 7, 5, 4, 6, 8, 5, 2, 9, 4, 3, 6, 9, 9, 9, 9, 2, 2,
2, 8, 5, 5, 3, 3, 1, 2, 4, 6, 1, 8, 3, 5])
``````

``# 对arr4进行以列为主就行降维arr6 = arr4.flatten(order='F')arr6``
``````array([6, 8, 9, 3, 5, 9, 2, 4, 5, 6, 5, 8, 7, 5, 9, 1, 1, 4, 2, 6, 4, 9,
5, 3, 3, 2, 2, 2, 7, 3, 8, 1, 6, 9, 3, 5])
``````

Python

V1