如何在 Python 中将 NumPy 数组转换为字典?
本教程提供了使用 Python 将 NumPy 数组转换为字典的分步指南。在 NumPy 中,数组本质上是一个元素表,这些元素通常是数字并共享相同的数据类型。它由一个正整数元组索引,数组的维数称为其秩。数组沿每个维度的大小由一个整数元组定义,称为数组的形状。NumPy 数组类称为 ndarray,可以使用方括号访问其元素。可以使用嵌套的 Python 列表初始化 NumPy 数组。
当您需要对数组执行某些操作(例如排序或搜索)并需要字典作为输入时,在 Python 中将 NumPy 数组转换为字典会很有用。生成的字典将具有与数组元素的索引相对应的键和与数组元素本身相对应的值。
借助本教程中提供的分步说明,您将能够轻松地将 NumPy 数组转换为 Python 中的字典。
将 NumPy 数组转换为字典的方法涉及三个主要步骤 -
第一步是使用 flatten 函数创建折叠为单个维度的数组副本。当我们想要按顺序访问数组的每个元素时,这很有用。
第二步是使用 enumerate 函数,它会自动为列表中的每个项目生成一个计数器或索引。计数器或索引默认从 0 开始,但如果需要,我们可以指定不同的起始值。在这种情况下,计数器或索引对应于字典的键。
最后,我们使用 dict 函数将扁平化数组及其枚举索引转换为字典。生成的字典将具有与扁平化数组的索引相对应的键和与数组元素相对应的值。
现在让我们关注代码示例,我们将在 Python 中将 NumPy 数组转换为字典。
示例 1:将 numPy 数组转换为字典
此代码创建一个 3×3 的整数 NumPy 数组,然后使用 dict 和 enumerate 函数将其转换为字典。生成的字典具有与扁平化数组的索引相对应的键和与数组元素相对应的值。然后我们打印原始数组和生成的字典以验证转换。
考虑下面显示的代码。
# 导入所需库 import numpy as np # 创建 numpy 数组 array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 将 numpy 数组转换为字典 d = dict(enumerate(array.flatten(), 1)) # 打印 numpy 数组 print(array) print(type(array)) # 打印字典 print(d) print(type(d))
要运行上述代码,我们需要运行下面显示的命令。
python3 main.py
输出
在终端中运行上述命令后,我们将得到以下内容输出
[[1 2 3] [4 5 6] [7 8 9]] <class 'numpy.ndarray'> {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} <class 'dict'>
示例 2
在此版本的代码中,我们使用 enumerate 函数为 NumPy 数组的每一行创建键值对。生成的字典的键为 1、2 和 3(对应于行索引加 1),值分别为 [1, 2, 3]、[4, 5, 6] 和 [7, 8, 9]。
然后,我们打印原始 NumPy 数组和生成的字典以验证转换。
请考虑下面显示的代码。
# 导入所需库 import numpy as np # 创建 numpy 数组 array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 将 numpy 数组转换为字典 d = dict(enumerate(array, 1)) # 打印 numpy 数组 print(array) print(type(array)) # 打印字典 print(d) print(type(d))
输出
[[1 2 3] [4 5 6] [7 8 9]] <class 'numpy.ndarray'> {1: array([1, 2, 3]), 2: array([4, 5, 6]), 3: array([7, 8, 9])} <class 'dict'>
结论
总之,使用各种方法可以轻松地在 Python 中将 NumPy 数组转换为字典。最简单的方法是将 dict() 函数与 NumPy 数组的 enumerate() 函数和 flatten() 方法结合使用。
另一种方法是使用字典推导来迭代数组的行并根据行索引和行本身创建键值对。这些方法允许我们将 NumPy 数组表示为字典,这对于需要字典数据结构的各种应用程序都很有用。
借助本教程中提供的示例,您应该能够轻松地在 Python 代码中将 NumPy 数组转换为字典。