如何将NumPy数组转换为Python字典?
本教程提供了一个逐步指南,介绍如何使用Python将NumPy数组转换为字典。在NumPy中,数组本质上是元素的表格,通常为数字,并且共享相同的数据类型。它由正整数元组索引,并且数组的维度数称为其秩。每个维度沿着其方向的大小由一个整数元组定义,称为数组的形状。NumPy数组类称为 ndarray ,可以使用方括号访问其元素。使用嵌套Python列表可以实现初始化NumPy数组。
在Python中将NumPy数组转换为字典,当您需要对数组执行某些操作(例如排序或搜索)并需要字典作为输入时,可以非常有用。生成的字典将具有对应于数组元素的索引的键,以及对应于数组元素本身的值。
借助本教程提供的逐步说明,您将能够轻松将NumPy数组转换为Python中的字典。
将NumPy数组转换为字典的方法涉及三个主要步骤 –
-
第一步是使用扁平化函数来创建折叠为单个维度的数组副本。当我们想要逐个访问数组的每个元素时,这非常有用。
-
第二步是使用enumerate函数,它会自动为列表中的每个项目生成计数器或索引。默认情况下,计数器或索引从0开始,但如果需要,可以指定不同的起始值。在这种情况下,计数器或索引对应于字典的键。
-
最后,我们使用dict函数将带有枚举索引的扁平化数组转换为字典。生成的字典将具有对应于扁平化数组的索引的键,并具有对应于数组元素的值。
现在,让我们专注于代码示例,其中我们将将NumPy数组转换为Python中的字典。
示例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()函数结合enumerate()函数和NumPy数组的flatten()方法。
另一种方法是使用字典生成式遍历数组的行,并根据行索引和行本身创建键值对。这些方法允许我们将NumPy数组表示为字典,这对于需要字典数据结构的各种应用程序都很有用。
通过本教程提供的示例,您应该能够轻松地在Python代码中将NumPy数组转换为字典。