1 import numpy as np
2
3 # 创建一个一位数组
4 arr = np.arange(9)
5 print("arr:
", arr)
6 # 可以通过下标来获取指定元素
7 print("获取元素", arr[3]) # 降低维度
8 print("获取元素", arr[7]) # 降低维度
9 print("获取元素", arr[[1, 2, 3, 4, 5, 6, 7, ]])
10 print("获取元素", arr[[1, 3, 5, 7]])
11
12 # 通过切片来获取元素
13 print("切片获取元素:", arr[2:3])
14 print("切片获取元素:", arr[1:6:2])
15
16 # 创建一个二维数组
17 arr = np.arange(1, 17).reshape((4, 4))
18 print("arr:
", arr)
19 print("arr的维度:", arr.ndim)
20
21 # 二维数组的索引的时候,使用下标会降低维度,用一次下标降低一个维度
22 # 使用下标获取二维数组中的元素
23 # arr[行,列]
24 print("获取到的元素:", arr[0,1]) # 由二维降到零维
25 # 使用切片来获取元素
26 print("获取切片获取到的元素:", arr[0:1, 1:2]) # 保持二维
27 # 使用下标和切片配合获取元素
28 print("使用下标和切片获取到的元素:", arr[0,1:2]) # 由二维降到一维
29
30 print("~" * 60)
31
32 # 二维数组获取多个元素,不降维
33 print("获取切片获取多个元素的结果:
", arr[1:3, 1:3]) # 不降维
34 print("使用下标和切片获取多个元素的结果:
", arr[[1, 2], 1:3]) # 不降维
35
36 # 特殊情况!!
37 print("使用下标和切片获取多个元素的结果:
", arr[[1, 2], [1, 3]]) # [ 6 12]
38 # print("使用下标和切片获取多个元素的结果:
", arr[[1, 2, 3], [1, 3]]) # 错误,前后的下标列表必须一致
39
40 """
41 三维 arr --> 怎么索引元素? arr[块,行,列]
42 四维 arr --> 怎么索引元素? arr[堆,块,行,列]
43 N 维 arr --> 怎么索引元素? arr[n-1个逗号]
44 """
45
46 # 创建一个数组
47 arr = np.arange(1, 10).reshape((3, 3))
48 print("arr:
", arr)
49 print("arr的维度:", arr.ndim)
50
51 bool_mask = np.array([0, 1, 2], dtype=np.bool)
52 bool_mask1 = np.array([0, 1, 2, 3], dtype=np.bool)
53 print("bool_mask:
", bool_mask)
54 print("bool_mask:
", bool_mask1)
55
56 # 选择True的行,丢掉False的行
57 print("利用bool数组来进行切片:
", arr[bool_mask, :])
58 # print("利用bool数组来进行切片:
", arr[bool_mask1, :]) # 错误,bool数组的长度必须与行或列相同
59 # 选择True的列,丢掉False的列
60 print("利用bool数组来进行切片:
", arr[:, bool_mask])
61 # 行列都使用bool数组
62 print("利用bool数组来进行切片:
", arr[bool_mask, bool_mask])