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

  • Post category:Python

将NumPy数组转换为字典在Python中可以使用字典推导式来实现。具体步骤如下:

1.导入numpy及其他必要的库。

import numpy as np

2.创建NumPy数组。

arr = np.array([[1, 2], [3, 4]])

3.使用字典推导式将NumPy数组转换为字典。

my_dict = {tuple(row): arr[row[0], row[1]] for row in np.argwhere(arr)}

上述代码中 np.argwhere 返回数组中非零元素的索引,然后使用元组作为键,并使用对应的值填充字典。 最后,将 NumPy 数组转换为字典。

4.打印转换后的字典。

print(my_dict)

下面提供一个更具体的实例说明。

如下面的NumPy数组,表示一个坐标系中的点坐标:

arr = np.array([[1, 2], [0, 4], [-1, -3], [5, 7]])

使用上述步骤,可以将该 NumPy 数组转换为字典:

my_dict = {tuple(row): arr[row[0], row[1]] for row in np.argwhere(arr)}

字典将输出如下值:

{
    (0, 0): 1, 
    (0, 1): 2, 
    (1, 1): 4, 
    (2, 0): -1, 
    (2, 1): -3, 
    (3, 0): 5, 
    (3, 1): 7
}

另一个示例是将一个字符串转换为包含其每个字符及其出现次数的字典:

string = "How many words are in this sentence?"
string_arr = np.array(list(string))
char_dict = {char: np.count_nonzero(string_arr == char) for char in string}
print(char_dict)

输出将是:

{
    'H': 1, 'o': 4, 'w': 2, ' ': 6, 'm': 1, 'a': 2, 'n': 5, 'y': 1, 
    'r': 3, 'd': 2, 's': 3, 'e': 6, 'i': 2, 't': 5, 'c': 1, '?': 1
}

此示例将字符串转换为NumPy数组,然后使用字典推导式将其转换为字典,并且计算每个字符的出现次数。