② 怎么把一个二维数组的所有元素全部倒序过来?
c = np.arange(12).reshape(3,4) display(c) # ------------你可分步考虑一下--------------- display(c[::-1,:]) display(c[:,::-1]) display(c[::-1,::-1])
结果如下:
2、索引
1)普通索引
a = np.arange(1,13,1).reshape(3,4) display(a) # 获取某一个元素:如下两种方式 display(a[1][2]) display(a[1,2]) # 获取某一行元素:如下两种方式 display(a[1]) display(a[1,:]) # 获取某一列元素 display(a[:,1])
结果如下:
2)通过整数数组进行索引(这个比较有用)
当要选取的元素不连续时,可以提供一个索引数组来选择(或修改)对应索引位置
的元素。
通过整数数组索引,【返回的是原数组的拷贝,而不是视图】。
可以提供多个一维数组索引,此时会将每个数组的对应位置元素作为索引,返回对应的元素。
① 通过整数数组索引,获取数组中的元素(这个用的多一点);
a = np.arange(1,21,1).reshape(5,4) display(a) # 选取数组a中的第2、第4、第5行数据; display(a[[1,3,4]])
结果如下:
② 提供多个一维数组索引,获取数组中的元素(这种方式很特别,了解一下);
a = np.arange(1,21,1).reshape(5,4) display(a) # 下面这个代码获取的是对应位置组成的坐标的元素 # [1,2],[4,3],[4,2] display(a[[1,4,4],[2,3,2]])
结果如下:
③ 通过整数数组索引,【返回的是原数组的拷贝,而不是视图】;
a = np.arange(1,21,1).reshape(5,4) display(a) b = a[[1,3]] display(b) b[1,2] = 888 display(b) display(a)
结果如下:
注意:当返回的是原数组的拷贝的时候,相当于将原始数组复制了一份,在内存中重新开辟了一块儿空间,存储起来了。因此,当我修改任何一个数组,相互之间没有任何影响。
3)通过布尔数组进行索引
含义:我们可以提供一个布尔类型的数组(A),然后通过该数组(A)来对另外一个数组(B)进行索引(元素选取)。索引的原则为:如果为True,则选取对应位置的元素,否则不选取。
作用:通过布尔类型的数组进行索引是常见且实用的操作,我们通常用来进行元素选择(或过滤)操作。
① 通过布尔数组取一维数组中的元素
a = np.array([17,19,32,13,27,10,40]) a1 = a[[True,True,False,True,False,False,True]] display(a1) bool_index = a > 15 display(bool_index) a2 = a[bool_index] display(a2)
结果如下: