如何在Python中将字典转换为矩阵或Numpy数组?
在本文中,我们将展示如何使用Python中NumPy库的array()函数将字典转换为矩阵或NumPy数组。
有时需要将Python中的字典转换为NumPy数组,Python提供了一种高效的方法来实现这一点。将字典转换为NumPy数组会得到一个包含字典中键值对的数组。
在本节中,我们将查看将各种类型的字典转换为Python中NumPy数组的示例。
- 将字典转换为Numpy数组
- 将嵌套字典转换为Numpy数组
- 将带混合键的字典转换为Numpy数组
numpy.array()函数
它返回一个ndarray。 ndarray是一个满足给定要求的数组对象。
要将字典转换为NumPy数组,Python具有 numpy.array() 方法,但我们必须先执行一些准备工作。请按以下三个基本步骤作为预先任务。
- 首先,使用 dict.items() 获取字典中的键值对组。
- 然后,将此组作为对象,使用 list(obj) 将其转换为列表。
- 最后,使用此列表作为数据,调用 numpy.array(data) 将其转换为数组。
语法
numpy.array(object, dtype=None,*,copy=True,order=‘K’,subok=False,ndmin=0)
参数
- object −这是一个数组或任何公开数组接口的对象。
- dtype − 数组的首选数据类型。
- copy − 如果为true(默认),则会复制该项。否则,只有在array返回副本时才会生成副本
- order − 它表示数组的内存布局
- subok − 如果为true,则通过子类;否则,返回的数组强制成为基类数组(默认值)
- ndmin − 表示结果数组的最小维数。
- Return Value −返回一个ndarray(它是满足指定要求的数组对象)
将字典转换为Numpy数组
算法(步骤)
以下是要执行所需任务的算法/步骤−
- 使用import关键字导入numpy模块并为其取别名np。
- 创建一个变量以存储输入字典。
- 在输入字典上应用 items() 函数(返回字典中的键值对组),并创建一个变量以存储它。
- 使用 list() 函数(返回可迭代的列表),将字典的所有键值对转换为列表数据类型。
- 使用NumPy模块的 array() 函数(返回一个ndarray。 ndarray是一个满足给定要求的数组对象)将上述数据列表转换为NumPy数组。
- 在转换后,打印输入字典的结果NumPy数组。
示例
以下程序使用array()函数将输入字典转换为NumPy数组并返回结果−
# importing numpy module with an alias name
import numpy as np
# creating a dictionary
inputDict = {1: 'Hello',
2: 'Tutorialspoint',
3: 'python'}
# getting all the key-value pairs in the dictionary
result_keyvalpairs = inputDict.items()
# converting an object to a list
list_data = list(result_keyvalpairs)
# converting list to an numpy array using numpy array() function
numpy_array = np.array(list_data)
print("Input Dictionary =",inputDict)
# printing the resultant numpy array
print("The resultant numpy array:\n", numpy_array)
输出
Input Dictionary = {1: 'Hello', 2: 'Tutorialspoint', 3: 'python'}
The resultant numpy array:
[['1' 'Hello']
['2' 'Tutorialspoint']
['3' 'python']][['a' '1']
['b' '2']
['c' '3']
['d' '4']
['e' '5']]
将嵌套字典转换为NumPy数组
算法(步骤)
以下是执行所需任务的算法/步骤-
-
使用import关键字导入numpy模块,并使用别名(np)。
-
创建一个变量来存储输入字典。
-
创建一个变量来存储临时列表,在其中逐个更新输入字典的键值对。
-
运行for循环以迭代输入字典中的每个键值对。
-
如果键的值也是字典,则在每个输入字典的值上使用items()方法。
-
使用extend()函数(用于在可迭代对象中添加多个项)将所有键值对更新到临时列表中。
-
使用NumPy模块的array()函数(返回一个ndarray。ndarray是满足给定要求的数组对象)将临时列表转换为NumPy数组。
-
在转换后打印结果NumPy数组。
示例
以下Python程序显示如何使用array()函数将嵌套字典转换为NumPy数组
−
# 导入numpy模块并起一个别名np
import numpy as np
# 创建一个字典
inputDict = {1: 'Hello',
2: 'Tutorialspoint',
3: 'python'}
# 获取字典中的所有键值对
result_keyvalpairs = inputDict.items()
# 将一个对象转换为列表
list_data = list(result_keyvalpairs)
# 使用numpy.array()函数将列表转换为numpy数组
numpy_array = np.array(list_data)
print("Input Dictionary =",inputDict)
# 打印结果numpy数组
print("The resultant numpy array:\n", numpy_array)
输出
运行上述程序将生成以下输出
Input Dictionary = {1: 'Hello', 2: 'Tutorialspoint', 3: 'python'}
The resultant numpy array:
[['1' 'Hello']
['2' 'Tutorialspoint']
['3' 'python']]
将嵌套字典转换为numpy数组
算法(步骤)
执行所需任务的算法/步骤如下:
-
创建一个变量来存储输入的嵌套字典(一个字典内部包含另一个字典)。
-
使用 list() 函数(返回可迭代对象的列表)将字典中的所有嵌套键值对转换为列表数据类型。
-
使用NumPy模块的 array() 函数将以上数据列表转换为NumPy数组。
-
打印转换后的输入字典的NumPy数组。
例子
以下程序使用array()函数将嵌套的输入字典转换为NumPy数组并返回它:
# 导入NumPy模块并起一个别名np
import numpy as np
# 创建一个嵌套字典
nestedDictionary = {1: 'Hello',
2: 'Tutorialspoint',
3: {'X': 'This is',
'Y': 'python',
'Z': 'code'}}
# 获取字典中的所有键值对
result_keyvalpairs = nestedDictionary.items()
# 将一个对象转换为列表
list_data = list(result_keyvalpairs)
# 使用numpy.array()函数将列表转换为数组
numpy_array = np.array(list_data)
print("Input nested Dictionary = ",nestedDictionary)
# 打印结果numpy数组
print("\nThe resultant numpy array:\n", numpy_array)
输出
运行上述程序将生成以下输出。
Input nested Dictionary = {1: 'Hello', 2: 'Tutorialspoint', 3: {'X': 'This is', 'Y': 'python', 'Z': 'code'}}
The resultant numpy array:
[[1 'Hello']
[2 'Tutorialspoint']
[3 {'X': 'This is', 'Y': 'python', 'Z': 'code'}]]
将混合键字典转换为NumPy数组
创建一个具有混合键(例如字符串、整数、浮点数、列表等)并使用随机值填充的输入字典
例子
以下程序使用array()函数将带有混合键的字典转换为NumPy数组,并返回它 –
# 导入numpy模块并起一个别名np
import numpy as np
# 创建一个具有混合键的字典(例如字符串和数字作为键)
nestedDictionary = {'website': 'Tutorialspoint', 10: [2, 5, 8]}
# 获取字典中的所有键值对
result_keyvalpairs = nestedDictionary.items()
# 将一个对象转换为列表
list_data = list(result_keyvalpairs)
# 使用numpy.array()函数将列表转换为数组
numpy_array = np.array(list_data, dtype=object)
# 打印结果numpy数组
print("The resultant numpy array:\n", numpy_array)
输出
运行上述程序将生成以下输出:
结果的numpy数组:
[['网站' 'Tutorialspoint']
[10 list([2, 5, 8])]]
结论
在本文中,我们学习了字典中各种类型的键值对,并学习了如何将它们转换为Python中的矩阵或Numpy数组。