HOWTO · NumPy
获取 NumPy 数组长度
使用 `len(array)` 获取 NumPy 数组沿第一轴的长度,使用 `array.size` 计算所有元素的总数,使用 `array.shape` 查看各维度的长度。
本页内容
使用 len(array) 获取 NumPy 数组在首轴上的长度,使用 array.size 统计所有元素,使用 array.shape 查看各维度。这些方法回答的问题不同:对于二维数组,长度指行数,size 指元素总数,shape 则描述行数和列数。
获取 NumPy 数组的长度和元素总数
Python 内置的 len() 会返回至少有一个维度的数组在首轴上的长度。对于一维数组,这也就是元素总数。对于多维数组,它统计最外层的分组,而不是每个单独的元素。
ndarray.size 属性会返回所有轴上的元素总数。使用时写作 array.size,不带括号。它适用于一维和多维数组;统计元素前无需先将数组展平。
以下独立示例需要 NumPy;代码以及其中可见的标签和输出均保持英文。
本节中的代码以及显示的标签或输出仍为英文。
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()。如果不熟悉的数组不像表格那样排列,请先查看其形状,再进行索引或拆分维度。