如何在 Python 中将 NumPy 数组转换为字典?


本教程提供了一个分步指南,介绍如何使用 Python 将 NumPy 数组转换为字典。在 NumPy 中,数组本质上是一个元素表,这些元素通常是数字,并且共享相同的数据类型。它由一个正整数元组索引,数组的维度数称为其秩。每个维度上的数组大小由一个称为数组形状的整数元组定义。NumPy 数组类称为ndarray,其元素可以通过使用方括号访问。可以使用嵌套 Python 列表来初始化 NumPy 数组。

在 Python 中将 NumPy 数组转换为字典在您需要对数组执行某些操作(例如排序或搜索)并需要字典作为输入时非常有用。生成的字典将具有对应于数组元素索引的键,以及对应于数组元素本身的值。

借助本教程中提供的分步说明,您将能够轻松地将 NumPy 数组转换为 Python 中的字典。

将 NumPy 数组转换为字典的方法涉及三个主要步骤 -

  • 第一步是使用 flatten 函数创建一个数组的副本,该副本折叠成一个维度。当我们希望顺序访问数组的每个元素时,这很有用。

  • 第二步是使用 enumerate 函数,该函数会自动为列表中的每个项目生成一个计数器或索引。默认情况下,计数器或索引从 0 开始,但如果需要,我们可以指定不同的起始值。在这种情况下,计数器或索引对应于字典的键。

  • 最后,我们使用 dict 函数将具有枚举索引的扁平化数组转换为字典。生成的字典将具有对应于扁平化数组索引的键,以及对应于数组元素的值。

现在让我们关注代码示例,在该示例中我们将 NumPy 数组转换为 Python 中的字典。

示例 1:将 NumPy 数组转换为字典

此代码创建了一个 3×3 的整数 NumPy 数组,然后使用 dict 和 enumerate 函数将其转换为字典。生成的字典具有对应于扁平化数组索引的键,以及对应于数组元素的值。然后,我们打印原始数组和生成的字典以验证转换。

请考虑以下所示代码。

# importing required libraries
import numpy as np

# creating a numpy array
array = np.array([[1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]])

# convert numpy array to dictionary
d = dict(enumerate(array.flatten(), 1))

# print numpy array
print(array)
print(type(array))

# print dictionary
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 数组和生成的字典以验证转换。

请考虑以下所示代码。

# importing required libraries
import numpy as np

# creating a numpy array
array = np.array([[1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]])

# convert numpy array to dictionary
d = dict(enumerate(array, 1))

# print numpy array
print(array)
print(type(array))

# print dictionary
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'>

结论

总之,可以使用多种方法轻松地将 NumPy 数组转换为 Python 中的字典。最简单的方法是将 dict() 函数与 enumerate() 函数和 NumPy 数组的 flatten() 方法结合使用。

另一种方法是使用字典推导式迭代数组的行,并根据行索引和行本身创建键值对。这些方法允许我们将 NumPy 数组表示为字典,这对于需要字典数据结构的各种应用程序很有用。

借助本教程中提供的示例,您应该能够轻松地将 NumPy 数组转换为 Python 代码中的字典。

更新于: 2023年4月18日

7K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告