HOWTO · NumPy

獲取 NumPy 陣列長度

使用 `len(array)` 取得 NumPy 陣列第一軸的長度,使用 `array.size` 計算所有元素的總數,並使用 `array.shape` 查看每個維度的長度。

本頁內容

使用 len(array) 取得 NumPy 陣列第一軸的長度,使用 array.size 計算所有元素的總數,並使用 array.shape 查看各維度。三者回答的是不同問題:對於二維陣列,長度是列數,元素總數是所有項目的數量,而形狀則描述列數與欄數。

取得 NumPy 陣列的長度與元素總數

Python 內建的 len() 會回傳至少有一個維度的陣列之第一軸長度。對一維陣列而言,這也就是元素總數;對多維陣列而言,它計算的是最外層群組的數量,而非每個項目的總數。

ndarray.size 屬性會回傳所有軸上的元素總數。使用時寫成 array.size,不加括號。一維與多維陣列都適用;計算元素數量前不必先將陣列攤平。

這個自包含範例需要 NumPy。範例中的 Output 標籤維持英文。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import numpy as np

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

print("Vector length:", len(vector))
print("Vector element count:", vector.size)
print("Array length:", len(array))
print("Array element count:", array.size)
Vector length: 6
Vector element count: 6
Array length: 2
Array element count: 6

向量的單一軸上有六個項目,因此其長度與元素總數相同。二維陣列則有兩列,每列包含三個項目。因此,它的第一軸長度表示列數,而元素總數包含兩列中的所有項目。

NumPy 也提供函式 np.size(array);未指定軸時,它會回傳元素總數。與屬性不同,這個函式可以接受軸參數:np.size(array, axis=1) 會取得第二軸的長度。若要計算元素總數,請使用屬性;若要取得特定維度,則指定軸。這兩種操作都不會只計算不重複或非零的值。

查看 NumPy 陣列的維度

ndarray.shape 屬性會回傳一個元組,其中每個軸各有一個長度。使用時寫成 array.shape,不加括號。對應的函式是 np.shape(array);它同樣回傳形狀,而不是單一的元素總數。

以上述二維陣列為例,形狀是 (2, 3):兩列、三欄。使用 array.shape[0] 取得列數,使用 array.shape[1] 取得欄數。只有在陣列恰好有兩個維度時,才適合使用 rows, columns = array.shape 解包。

含有六個元素的一維陣列,其形狀是 (6,),也就是只有一個項目的元組,而不是整數 6。像 (2, 3, 4) 這樣的形狀則描述三個軸。將所有軸的長度相乘可得到元素總數;只乘前兩個值並不適用於更高維度的陣列。如果只需要總數,請使用 array.size。

形狀元組中的項目數就是維度數,也可以透過 array.ndim 取得。像 np.array(7) 這樣的純量陣列,其形狀為 (),且包含一個元素;但它沒有第一軸,因此不能對它使用 len()。若不熟悉的陣列不像表格,請先查看形狀,再進行索引或解包維度。