在 Python 中將 NumPy 陣列轉換為列表
列表和陣列是 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]
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn