Numpy ndarray.flatten() 方法
Numpy 的 ndarray.flatten() 方法用于返回一个新的一维数组,该数组是原始数组的副本,但该数组是经过展平的。
ndarray.flat 属性是一个迭代器,而 ndarray.flatten() 则用于创建一个新的数组。
我们可以指定展平的顺序,'C' 表示行优先(C 风格),'F' 表示列优先(Fortran 风格),'A' 表示如果数组是 Fortran 连续的,'F' 表示数组是连续的,'C' 表示数组是连续的,'K' 表示元素在内存中的显示顺序。
语法
Numpy 的语法ndarray.flatten 函数如下:
ndarray.flatten(order='C')
参数
此函数接受一个参数,即"C",默认情况下为行优先。
我们可以指定"F"表示列优先;"A"表示按列优先顺序展平;如果 a 在内存中是 Fortran 连续的,则按行优先顺序展平;否则按行优先顺序展平;"K"表示按元素在内存中出现的顺序展平。
返回值
此函数返回一个一维 NumPy 数组,其中包含输入数组中按指定顺序排列的所有元素。
示例 1
以下是 Numpy 的示例ndarray.flatten() 方法演示了如何将二维数组以默认的行优先顺序展平为一维数组,结果为 [1, 2, 3, 4, 5, 6] −
import numpy as np # 创建二维 numpy 数组 array_2d = np.array([[1, 2, 3], [4, 5, 6]]) # 使用默认顺序 ('C') 展平数组 flattened_array = array_2d.flatten() print("原始二维数组:") print(array_2d) print(" 展平后的数组(行优先顺序):") print(flattened_array)
输出
原始二维数组: [[1 2 3] [4 5 6]] 展平后的数组(行优先顺序): [1 2 3 4 5 6]
示例 2
本例展示了如何将三维数组展平为列优先的一维数组,结果为 [1, 5, 3, 7, 2, 6, 4, 8] −
import numpy as np # 创建三维 numpy 数组 array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 使用'F' 顺序 flattened_array = array_3d.flatten(order='F') print("原始三维数组:") print(array_3d) print(" 平铺数组(列主序):") print(flattened_array)
输出
原始三维数组: [[[1 2] [3 4]] [[5 6] [7 8]]] 平铺数组(列主序): [1 5 3 7 2 6 4 8]
示例 3
以下示例显示使用 'A' 顺序平铺 Fortran 连续数组,结果为列主序平铺,即 [1, 4, 2, 5, 3, 6] −
import numpy as np # 使用 Fortran 连续内存布局创建二维 numpy 数组 array_fortran = np.asfortranarray([[1, 2, 3], [4, 5, 6]]) # 使用"A"顺序展平数组 flattened_array = array_fortran.flatten(order='A') print("原始 Fortran 连续二维数组:") print(array_fortran) print(" 扁平化数组('A' 顺序):") print(flattened_array)
输出
原始 Fortran 连续二维数组: [[1 2 3] [4 5 6]] 扁平化数组('A' 顺序): [1 4 2 5 3 6]