如何在 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+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.