- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境配置
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 数组的创建和操作
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 数组迭代
- NumPy - 数组重塑
- NumPy - 数组连接
- NumPy - 数组堆叠
- NumPy - 数组分割
- NumPy - 数组扁平化
- NumPy - 数组转置
- NumPy 索引和切片
- NumPy - 索引与切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步幅
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 复制与视图
- NumPy - 元素级的数组比较
- NumPy - 数组过滤
- NumPy - 数组连接
- NumPy - 排序、搜索和计数函数
- NumPy - 数组搜索
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- NumPy - 加载数组
- NumPy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 缺失数据插补
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- NumPy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级的矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 数组扁平化
扁平化 NumPy 数组
NumPy 中的数组扁平化是指将多维数组转换为一维数组的过程,其中所有元素按顺序排列。这意味着,无论数组的维度是多少(无论是二维、三维还是更高维),扁平化都将其简化为单个元素向量。
NumPy 提供了两个函数,ndarray.flatten() 和 ndarray.ravel(),两者都用于扁平化数组。
使用 flatten() 函数扁平化数组
NumPy 中的 flatten() 函数用于将多维数组转换为一维数组,也称为扁平化。
它返回一个新数组,该数组包含原始数组中的所有元素,以单行主序(C 样式)序列排列。以下是语法:
arr.flatten(order='C')
其中,order 是一个可选参数,用于指定元素的顺序。默认为 'C',表示行主序。
示例
在下面的示例中,我们使用 NumPy 中的 flatten() 函数将数组“arr”扁平化为单行主序:
import numpy as np # array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Flattening the array flattened_arr = arr.flatten() print("Original Array:") print(arr) print("\nFlattened Array:", flattened_arr)
获得的输出如下:
Original Array: [[1 2 3] [4 5 6]] Flattened Array: [1 2 3 4 5 6]
使用 ravel() 函数扁平化数组
NumPy 中的 ravel() 函数用于从多维数组创建一个扁平化的 1D 数组。与 flatten() 函数不同,ravel() 函数在可能的情况下返回原始数组的扁平化视图,而不会创建副本。以下是语法:
arr.ravel(order='C')
示例
在下面的示例中,我们使用 ravel() 函数将一个 2D 数组扁平化为一个 1D 数组:
import numpy as np # array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Flattening the array raveled_arr = arr.ravel() print("Original Array:") print(arr) print("\nRaveled Array:", raveled_arr)
上述代码的输出如下:
Original Array: [[1 2 3] [4 5 6]] Raveled Array:[1 2 3 4 5 6]
Fortran 顺序扁平化数组
当您以 Fortran 顺序扁平化多维数组时,您将其转换为一维数组,其中元素排列方式就像您逐列读取数组一样。
例如,如果您有一个维度为 (行, 列) 的 2D 数组 A,则以 Fortran 顺序扁平化它会将元素排列成这样:您遍历第一列的所有元素,然后移动到第二列,依此类推。
在 NumPy 中,您可以通过在 flatten() 函数中将 order 参数设置为 F 来以 Fortran 顺序扁平化数组。
示例
在这个例子中,我们使用 NumPy 中的 array.flatten() 函数以 Fortran 顺序扁平化数组“arr”:
import numpy as np # array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Flatten in Fortran order flattened_arr_fortran = arr.flatten(order='F') print("Original Array:") print(arr) print("\nFlattened Array (Fortran order):",flattened_arr_fortran)
执行上述代码后,我们将得到以下输出:
Original Array: [[1 2 3] [4 5 6]] Flattened Array (Fortran order):[1 4 2 5 3 6]
连接扁平化数组
在 NumPy 中,您可以使用 numpy.concatenate() 函数连接扁平化数组。以下是逐步操作方法:
扁平化数组 - 首先,您需要使用 flatten() 函数扁平化要连接的每个数组。这会将每个多维数组转换为一维数组。
连接 - 然后,使用 numpy.concatenate() 函数将扁平化的数组连接成一个数组。
连接是将多个数组组合成一个更大数组的过程。当您连接扁平化数组时,您主要是在一个接一个地追加每个扁平化数组的元素,以创建一个更长的单个数组。
示例
在下面的示例中,我们首先使用 array.flatten() 函数扁平化 2D 数组“arr1”和“arr2”。然后,我们使用 NumPy 中的 concatenate() 函数连接这些扁平化数组:
import numpy as np # arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # Flatten arrays flat_arr1 = arr1.flatten() flat_arr2 = arr2.flatten() # Concatenate flattened arrays concatenated_arr = np.concatenate((flat_arr1, flat_arr2)) print("Flattened Array 1:") print(flat_arr1) print("\nFlattened Array 2:") print(flat_arr2) print("\nConcatenated Flattened Array:",concatenated_arr)
获得的输出如下所示:
Flattened Array 1: [1 2 3 4] Flattened Array 2: [5 6 7 8] Concatenated Flattened Array:[1 2 3 4 5 6 7 8]
用零初始化扁平化数组
用零初始化扁平化数组是一种创建一维数组的方法,其中所有元素都设置为零。
NumPy 提供了一个函数 numpy.zeros_like(),用于创建一个与给定数组具有相同形状和类型的零数组。以下是语法:
numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
其中,
a - 输入数组。
dtype (可选) - 指定输出数组的数据类型。如果未提供,则使用 a 的数据类型。
order (可选) - 指定结果的内存布局顺序('C' 表示行主序,'F' 表示列主序,'A' 表示任意,'K' 表示保持,默认为 'C')。
subok (可选) - 如果为 True,则子类将被传递,否则,返回的数组将强制为基类数组(默认为 False)。
shape (可选) - 输出数组的形状。如果没有给出,则默认为 a.shape。
示例
在这个例子中,我们创建了一个用特定值初始化的 2D NumPy 数组“arr”。然后我们将“arr”扁平化为一个 1D 数组,并用零初始化“flattened_zeros”:
import numpy as np # Initializing a 2D array arr = np.array([[1, 2], [3, 4]]) # Flattening and initializing with zeros flattened_zeros = np.zeros_like(arr.flatten()) print("Original Array:") print(arr) print("\nFlattened Array with Zeros:",flattened_zeros)
产生的结果如下:
Original Array: [[1 2] [3 4]] Flattened Array with Zeros: [0 0 0 0]
查找扁平化数组中的最大值
查找扁平化数组中的最大值意味着确定多维数组的一维表示中最大的元素。
在 NumPy 中,您可以使用 numpy.max() 函数查找数组中的最大值。当应用于扁平化数组时,此函数返回该数组中存在的最高值。以下是语法:
numpy.max(a, axis=None, out=None, keepdims=False, initial=None, where=True)
其中,
a - 要计算最大值的输入数组。
axis (可选) - 指定要操作的轴。默认为 "None",返回扁平化数组的最大值。
out (可选) - 结果存储的输出数组。如果提供,则其形状和缓冲区长度必须与预期的输出相同。
示例
在下面的示例中,我们使用 numpy.max() 函数查找扁平化数组中的最大值:
import numpy as np # array arr = np.array([[1, 2], [3, 4]]) # Flatten array flattened_arr = arr.flatten() # Find maximum value max_value = np.max(flattened_arr) print("Original Array:") print(arr) print("\nFlattened Array:") print(flattened_arr) print("\nMaximum Value in Flattened Array:",max_value)
我们得到如下所示的输出:
Original Array: [[1 2] [3 4]] Flattened Array: [1 2 3 4] Maximum Value in Flattened Array:4