NumPy 切片和索引学习笔记
1. 索引
在 NumPy 中,可以使用索引来访问数组中的元素。索引可以是整数或者一个范围。
1.1 整数索引
对于一维数组,我们可以使用一个整数索引来获得该位置上的元素:
pythonCopy Codeimport numpy as np
a = np.array([1, 3, 5, 7])
print(a[2]) # 输出 5
对于多维数组,我们需要使用多个整数索引:
pythonCopy Codeb = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print(b[1, 2]) # 输出 5
1.2 范围索引
我们可以使用 :
来表示一个范围。例如,a[start:end]
表示从 start
到 end-1
的所有元素。如果 start
没有指定,则默认为 0;如果 end
没有指定,则默认为数组的大小。
pythonCopy Codec = np.array([10, 20, 30, 40, 50])
print(c[1:4]) # 输出 [20, 30, 40]
对于多维数组,我们可以在每个维度上都使用 :
表示一个范围。
pythonCopy Coded = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print(d[:2, 1:]) # 输出 [[1, 2], [4, 5]]
2. 切片
切片与索引类似,但是允许我们获得数组的一部分。对于一维数组,语法为 a[start:end:step]
,其中 start
表示开始位置(默认为 0),end
表示结束位置(默认为数组大小),step
表示步长(默认为 1)。
pythonCopy Codee = np.array([11, 12, 13, 14, 15])
print(e[1:4:2]) # 输出 [12, 14]
对于多维数组,我们需要在每个维度上都指定切片:
pythonCopy Codef = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print(f[:2, 1::2]) # 输出 [[1], [4]]
3. 实例
下面是一个实例,展示如何使用切片和索引来操作数组:
pythonCopy Codeimport numpy as np
# 创建一个 4x4 的数组
arr = np.arange(16).reshape((4, 4))
# 打印原始数组
print("原始数组:\n", arr)
# 索引
print("索引:", arr[2, 3])
# 范围索引
print("范围索引:", arr[:, 1])
# 切片
print("切片:", arr[1:3, :2])
# 操作
arr[1:3, :2] *= 10
print("操作后的数组:\n", arr)
输出结果为:
Copy Code原始数组:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
索引: 11
范围索引: [ 1 5 9 13]
切片: [[4 5]
[8 9]]
操作后的数组:
[[ 0 1 2 3]
[40 50 6 7]
[80 90 10 11]
[12 13 14 15]]
以上就是 NumPy 切片和索引的学习笔记。