HOWTO · NumPy

获取 NumPy 中的行数

array.shape 属性可用于确定 Python 中 NumPy 数组的行数和列数。

本页内容

对于二维 NumPy 数组,使用 array.shape[0] 获取行数。array.shape 属性会返回完整的维度元组:对于二维数组,格式为 (行数, 列数)。len(array) 和 np.size(array, 0) 返回相同的第一轴计数。

以下示例需要安装了 NumPy 的 Python 环境。

使用 array.shape 属性获取 NumPy 数组的行数

NumPy 的轴从 0 开始编号。对于二维数组,轴 0 是行轴,轴 1 是列轴。读取 array.shape[0] 可获取行数,读取 array.shape[1] 可获取列数;这两种写法都不需要在 shape 后加括号。

运行以下示例:

本节中的代码以及显示的标签或输出仍为英文。

import numpy as np

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

rows = array.shape[0]
columns = array.shape[1]

print("Rows =", rows)
print("Columns =", columns)

输出:

Rows = 2
Columns = 3

两个内部列表组成两行,每行包含三个值,因此数组的形状为 (2, 3)。如果确定数组是二维的,也可以使用 rows, columns = array.shape 解包这两个维度。

一维数组的形状可能是 (3,),它没有单独的行和列维度。它的 shape[0] 是元素数量,而 shape[1] 不存在。如果应用要求数据必须是表格形式,请检查 array.ndim == 2。对于维度更多的数组,shape[0] 仍表示第一轴,其含义取决于数据的组织方式。

使用 len() 函数获取 NumPy 数组的行数

Python 内置的 len() 函数会返回 NumPy 数组第一维的长度。对于二维数组,它统计的是行数,而不是所有单个值的数量。

本节中的代码以及显示的标签或输出仍为英文。

import numpy as np

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

num_rows = len(array)
print("Rows =", num_rows)

输出:

Rows = 2

这里,第一轴上的每个元素都是一行,包含三个值。因此,len(array) 表示的计数与 array.shape[0] 相同。不要用 len(array[0]) 统计行数:它测量的是第一行的长度,而且要求数组至少有一行。

形状为 (0, 3) 的数组没有行,因此 len(array) 和 array.shape[0] 的结果都是 0。标量数组没有第一轴,所以这两种写法都无法提供行数。

使用 np.size() 函数获取 NumPy 数组的行数

np.size() 函数接受一个数组和可选的整数参数 axis。指定 axis=0 可获取第一维的长度。位置参数写法 np.size(array, 0) 与此等效。

本节中的代码以及显示的标签或输出仍为英文。

import numpy as np

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

num_rows = np.size(array, 0)
print("Rows =", num_rows)

输出:

Rows = 2

省略 axis 会改变所统计的内容:np.size(array) 统计所有元素。对于这个二行三列的数组,总数是 6,而第一轴的长度是 2。同样,对于二维数组,np.size(array, axis=1) 会返回列数。axis 参数用于选择一个维度;它不是轴的元组。

总结

对于二维 NumPy 数组,使用 array.shape[0] 可直接获取行数。len(array) 和 np.size(array, 0) 得到相同的计数;np.size(array) 则返回元素总数。