1、索引与切片:
1.1 获取某行的数据::1.2 连续获取某几行的数据:1.3 获取某行某列的数据:1.4 获取某列的数据: 2、布尔索引:如:a2 = a1 < 103、值的替换:
3.1 利用索引,也可以做一些值的替换。把满足条件的位置的值替换成其他的值。3.2 使用条件索引来实现:3.3 使用函数来实现:
1、索引与切片: 1.1 获取某行的数据::示例代码如下:
# 1. 如果是一维数组 a1 = np.arange(0, 29) print(a1[1]) # 获取下标为1的元素 #结果为:1 a1 = np.arange(0, 24).reshape((4, 6)) print(a1[1]) # 获取下标为1的行的数据 #[ 6 7 8 9 10 11]
注意:以上例子是相乘,其实相加、相减、相除也都是类似的。
1.2 连续获取某几行的数据:# 1. 获取连续的几行的数据 a1 = np.arange(0,24).reshape((4,6)) print(a1) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [18 19 20 21 22 23]] print(a1[0:2]) #获取0行到1行的数据 # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11]] # 2. 获取不连续的几行的数据 print(a1[[0,2,3]]) # [[ 0 1 2 3 4 5] # [12 13 14 15 16 17] # [18 19 20 21 22 23]] # 3. 也可以使用负数进行索引 print(a1[[-1,-2]]) # [[18 19 20 21 22 23] # [12 13 14 15 16 17]]1.3 获取某行某列的数据:
#获取某行某列的数据: a1 = np.arange(0,24).reshape((4,6)) print(a1) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [18 19 20 21 22 23]] print(a1[1,1]) #获取1行1列的数据 #结果为:7 print(a1[0:2,0:2]) #获取0-1行的0-1列的数据 # [[0 1] # [6 7]] print(a1[[1,2],[2,3]]) #获取(1,2)和(2,3)的两个数据,这也叫花式索引 # [ 8 15]1.4 获取某列的数据:
#获取某列的数据 a1 = np.arange(0,24).reshape((4,6)) print(a1[:,1]) #获取第1列的数据 #结果为:[ 1 7 13 19]2、布尔索引:如:a2 = a1 < 10
2.1 布尔运算也是矢量的,比如以下代码:
#布尔索引 a1 = np.arange(0,24).reshape((4,6)) print(a1<10) #会返回一个新的数组,这个数组中的值全部都是bool类型 # [[ True True True True True True] # [ True True True True False False] # [False False False False False False] # [False False False False False False]]
2.2 这样看上去没有什么用,假如我现在要实现一个需求,要将a1数组中所有小于10的数据全部都提取出来。那么可以使用以下方式实现:
a1 = np.arange(0,24).reshape((4,6)) a2 = a1 < 10 print(a1[a2]) #这样就会在a1中把a2中为True的元素对应的位置的值提取出来 #结果为:[0 1 2 3 4 5 6 7 8 9]
2.3 其中布尔运算可以有!=、==、>、<、>=、<=以及&(与)和|(或)。示例代码如下:
a1 = np.arange(0,24).reshape((4,6)) a2 = a1[(a1 < 5) | (a1 > 10)] #这样就会在a1中把a1<5且a1>10的值取出来 print(a2) #[ 0 1 2 3 4 11 12 13 14 15 16 17 18 19 20 21 22 23]3、值的替换: 3.1 利用索引,也可以做一些值的替换。把满足条件的位置的值替换成其他的值。
比如以下代码:
#利用索引,也可以做一些值的替换 a1 = np.arange(0,24).reshape((4,6)) a1[3] = 0 #将第三行的所有值都替换成0 print(a1) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [ 0 0 0 0 0 0]]3.2 使用条件索引来实现:
# 使用条件索引来实现 a1 = np.arange(0,24).reshape((4,6)) a1[a1 < 5] = 0 #将小于5的所有值全部都替换成0 print(a1) # [[ 0 0 0 0 0 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [18 19 20 21 22 23]]3.3 使用函数来实现:
# where函数: a1 = np.arange(0,24).reshape((4,6)) a2 = np.where(a1 < 10,1,0) #把a1中所有小于10的数全部变成1,其余的变成0 print(a2) # [[1 1 1 1 1 1] # [1 1 1 1 0 0] # [0 0 0 0 0 0] # [0 0 0 0 0 0]]



