趋近智
就像你在表格中按行和列号查找信息,或在街道上按门牌号找到特定房屋一样,你需要一种方法来定位并取出NumPy数组中存储的单个值。这个操作用到索引。
最简单的情况是一维数组,它就像一个值列表或序列。在Python中,因此也在NumPy中,索引从0开始。这表示第一个元素在索引0处,第二个在索引1处,依此类推。这通常被称为零基索引。
让我们创建一维数组:
import numpy as np
# 创建一个简单的一维数组
arr1d = np.array([10, 11, 12, 13, 14])
print(arr1d)
[10 11 12 13 14]
要访问一个元素,在数组名后使用方括号 [],并将索引放在方括号内:
# 访问第一个元素 (索引 0)
first_element = arr1d[0]
print(f"第一个元素 (索引 0): {first_element}")
# 访问第三个元素 (索引 2)
third_element = arr1d[2]
print(f"第三个元素 (索引 2): {third_element}")
第一个元素 (索引 0): 10
第三个元素 (索引 2): 12
NumPy也支持负数索引,这对于从数组末尾访问元素很方便。索引 -1 表示最后一个元素,-2 表示倒数第二个,依此类推。
# 访问最后一个元素 (索引 -1)
last_element = arr1d[-1]
print(f"最后一个元素 (索引 -1): {last_element}")
# 访问倒数第二个元素 (索引 -2)
second_last = arr1d[-2]
print(f"倒数第二个元素 (索引 -2): {second_last}")
最后一个元素 (索引 -1): 14
倒数第二个元素 (索引 -2): 13
尝试访问有效范围之外的索引(0到length-1,或-1到-length)将导致 IndexError。确保索引在数组的大小范围内是很重要的。
二维数组,或称矩阵,有行和列。要访问二维数组中的单个元素,你需要同时指定行索引和列索引。同样,行索引和列索引都是零基的。
标准语法是 array[行索引, 列索引]。注意方括号内行索引和列索引之间有逗号分隔。
让我们创建一个二维数组:
# 创建一个2x3数组 (2行, 3列)
arr2d = np.array([[1, 2, 3],
[4, 5, 6]])
print("原始二维数组:\n", arr2d)
原始二维数组:
[[1 2 3]
[4 5 6]]
现在,让我们访问一些元素:
# 访问第0行第0列的元素 (左上角)
element_00 = arr2d[0, 0]
print(f"[0, 0]处的元素: {element_00}")
# 访问第1行第2列的元素 (右下角)
element_12 = arr2d[1, 2]
print(f"[1, 2]处的元素: {element_12}")
# 访问第0行第1列的元素
element_01 = arr2d[0, 1]
print(f"[0, 1]处的元素: {element_01}")
[0, 0]处的元素: 1
[1, 2]处的元素: 6
[0, 1]处的元素: 2
可以把第一个索引看作选择行,第二个索引看作选择该行内的列。
二维数组索引的可视化表示。行索引在前,列索引在后。突出显示的单元格
arr2d[1, 1]对应于行索引1和列索引1处的元素。
这个方法很自然地适用于更高维度的数组。对于N维数组,你在方括号内提供N个由逗号分隔的索引: array[index_dim0, index_dim1, ..., index_dimN-1]。
考虑一个三维数组(你可以把它看作是二维数组的层或页):
# 创建一个2x2x3数组 (2层, 2行, 3列)
arr3d = np.array([[[ 0, 1, 2],
[ 3, 4, 5]], # 第一层 (索引 0)
[[ 6, 7, 8],
[ 9, 10, 11]]]) # 第二层 (索引 1)
print("原始三维数组形状:", arr3d.shape)
原始三维数组形状: (2, 2, 3)
要访问一个元素,我们需要三个索引:层、行和列。
# 访问第1层、第0行、第2列的元素
element_102 = arr3d[1, 0, 2]
print(f"[1, 0, 2]处的元素: {element_102}")
# 访问第0层、第1行、第1列的元素
element_011 = arr3d[0, 1, 1]
print(f"[0, 1, 1]处的元素: {element_011}")
[1, 0, 2]处的元素: 8
[0, 1, 1]处的元素: 4
使用 arr[i] 或 arr[i, j] 等索引来访问单个元素,能得到该位置存储的特定值。这是处理NumPy数组中各个数据点最基本的方法。接下来,我们将在此基础上,学习如何使用切片和其他高级索引技术一次选取多个元素。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造