NumPy - 索引与切片
ndarray 对象的内容可以通过索引或切片来访问和修改,就像 Python 内置的容器对象一样。
NumPy 索引
NumPy 索引用于访问或修改数组中的元素。索引方法有三种:字段访问、基本切片和高级索引。
示例 1
在下面的示例中,我们使用 arange() 函数创建了一个数组,让我们看看如何从数组中访问单个元素,即 6。
import numpy as np a = np.arange(10) b = a[6] print(b)
以下是上述代码的输出 -
6
示例 2
假设我们有一个包含 5 名学生英语成绩的列表,我们需要访问第三名学生的成绩,我们使用 arr[2] 作为索引的起始位置'0'。
import numpy as np scores = ['86', '98', '100', '65', '75'] arr = np.array(scores) print("第三名学生的成绩是:", arr[2])
以下是上述代码的输出 -
第三名学生的成绩是:100
NumPy 中的切片
NumPy 切片是 Python 基本 n 维切片概念的扩展。通过向内置切片函数提供开始、停止和步骤参数来构造 Python 切片对象。此切片对象被传递给数组,以提取数组的一部分。
示例 1
在下面的代码中,我们将看到如何使用 arr[-2:] 访问数组中的最后两个元素。由于我们没有指定 stop 参数,因此它会访问从倒数第二个元素到数组末尾的元素。
import numpy as np arr = np.arange(6) print(arr[-2:])
以下是上述代码的输出 -
[4 5]
示例 2
假设我们有一个包含 1 到 12 的数字的数组,并且只需要访问偶数,我们使用带有 step 参数的切片'arr[::2]' 因为它会切片数组中的每个第二个元素。
import numpy as np arr = np.arange(12) even_num = arr[::2] print("偶数:", even_num)
以下是上述代码的输出 -
偶数:[ 0 2 4 6 8 10]
示例 3
让我们创建一个二维数组,并使用切片访问数组中的第二列。要访问所有行 (:) 但仅访问第二列(索引 1),我们使用 arr[:, 1]
import numpy as np arr = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]]) print(arr[:, 1])
以下是上述代码的输出 -
[20 50 80]
示例 4
在下面的代码中,我们创建了一个二维数组,让我们看看如何访问从第 2 行(索引 1)开始的所有元素,并使用 a[1:]。其中,a[1:] 选择从第二行(索引 1)开始到最后一行的所有行,包括所有列。
import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print (a) # 从索引开始切片 print ('现在我们将从索引 a[1:] 开始切片数组') print (a[1:])
以下是上述代码的输出 -
[[1 2 3] [3 4 5] [4 5 6]] 现在我们将从索引 a[1:] 开始切片数组 [[3 4 5] [4 5 6]]
示例 5
让我们看看如何在索引之间对数组进行切片 -
import numpy as np a = np.arange(10) print("从索引 1 到 6 的数组:", a[1:7])
运行上述程序,结果如下 -
从索引 1 到 6 的数组:[1 2 3 4 5 6]