HOWTO · Python

在 Python 中將 NumPy 陣列轉換為列表

本教程演示瞭如何將 numpy 陣列轉換為 Python 中的列表

本頁內容

列表和陣列是 Python 中兩個最基本且最常用的集合物件。

它們都是可變的,用於以通用名稱儲存元素的集合,並且每個元素都有可用於訪問它的特定位置。

但是,有一些顯著差異。列表已經在 Python 中內建,而對於陣列,我們需要匯入 arrays 或 NumPy 模組,並在使用它們之前宣告陣列。陣列還可以更有效地將資料儲存在記憶體中,並被廣泛用於數學運算。

在本教程中,我們將把一個 numpy 陣列轉換為一個列表。

使用 tolist() 方法將一個 NumPy 陣列轉換為列表

NumPy 陣列的 tolist() 方法可以將 NumPy 陣列轉換為列表。

例如,

import numpy as np

oned = np.array([[1, 2, 3]])
twod = np.array([[1, 2, 3], [4, 5, 6]])

print(oned.tolist())
print(twod.tolist())

輸出:

[[1, 2, 3]]
[[1, 2, 3], [4, 5, 6]]

請注意,此方法將整個陣列視為一個元素。這就是為什麼當我們將其與二維陣列一起使用時,它會返回列表列表。

為了避免這種情況,我們可以將 tolist() 與 flatten() 或 ravel() 方法一起使用,它們可以將 N-D 陣列轉換為線性一維陣列。這兩種方法執行相同的功能。不同之處在於 ravel() 方法返回陣列的參考檢視並影響原始陣列,而 flatten() 方法對陣列的副本起作用。因此,ravel() 函式被認為速度更快,佔用的記憶體更少。

以下程式碼顯示了這些函式的用法。

import numpy as np

oned = np.array([1, 2, 3])
twod = np.array([[1, 2, 3], [4, 5, 6]])

print(oned.flatten().tolist())
print(twod.flatten().tolist())


print(oned.ravel().tolist())
print(twod.ravel().tolist())

輸出:

[1, 2, 3]
[1, 2, 3, 4, 5, 6]
[1, 2, 3]
[1, 2, 3, 4, 5, 6]

使用 for 迴圈將 Python 中的 NumPy 陣列轉換為列表

對於那些剛接觸程式設計或想要定製最終列表的人來說,這只是一種基本方法。我們遍歷一個陣列,並將每個元素分別附加到一個空列表中。以下程式碼實現了這一點。

import numpy as np

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

for x in arr:
    lst.append(x)

print(lst)

輸出:

[1, 2, 3]