【数据分析&数据挖掘】数组的索引

 1 import numpy as np
 2 
 3 # 创建一个一位数组
 4 arr = np.arange(9)
 5 print("arr:\n", 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:\n", 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("获取切片获取多个元素的结果: \n", arr[1:3, 1:3])  # 不降维
34 print("使用下标和切片获取多个元素的结果: \n", arr[[1, 2], 1:3])  # 不降维
35 
36 # 特殊情况!!
37 print("使用下标和切片获取多个元素的结果: \n", arr[[1, 2], [1, 3]])  # [ 6 12]
38 # print("使用下标和切片获取多个元素的结果: \n", 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:\n", 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:\n", bool_mask)
54 print("bool_mask:\n", bool_mask1)
55 
56 # 选择True的行,丢掉False的行
57 print("利用bool数组来进行切片:\n", arr[bool_mask, :])
58 # print("利用bool数组来进行切片:\n", arr[bool_mask1, :])  # 错误,bool数组的长度必须与行或列相同
59 # 选择True的列,丢掉False的列
60 print("利用bool数组来进行切片:\n", arr[:, bool_mask])
61 # 行列都使用bool数组
62 print("利用bool数组来进行切片:\n", arr[bool_mask, bool_mask])

猜你喜欢

转载自www.cnblogs.com/Tree0108/p/12115487.html