Python基础(Numpy切片)
Python基础Numpy切片功能
操作方法
- 01
打开Python IDE,先导入Numpy模块 import Numpy as np
- 02
先输入数组 >>> a= np.arange(10) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
- 03
进行切片 >>> a[5]#用整数作为下标可以获得数组中的某个元素 5 >>> a[3:5]#用切片作为下标可以获得数组的一部分元素,注意包括首位,但不包含尾部 array([3, 4]) >>> a[:5]#切片中省略开始下标,表示从a[0]开始到a[5]结束,但不包含a[5] array([0, 1, 2, 3, 4])
- 04
>>> a[:-1]#下标可以是负数,数组倒数第一位为-1,a[:-1]表示从第一位一直取到-1的位置,但不包括-1位的数据 array([0, 1, 2, 3, 4, 5, 6, 7, 8])
- 05
>>> a[2:4]=100,101#可以通过数组下标赋值来改变数组中数据 >>> a array([ 0, 1, 100, 101, 4, 5, 6, 7, 8, 9])
- 06
>>> a[1:-1:2]#从数组下标1取到-1位置,且步长为2,且不包含-1位置数据 array([ 1, 101, 5, 7])
- 07
>>> a[::-1]#省略切片的开始下标和结束下标,步长为-1,表示整个数组头尾颠倒 array([ 9, 8, 7, 6, 5, 4, 101, 100, 1, 0])
- 08
>>> a[5:1:-2]#起始点为a[5],终点位置为a[1],且不包含a[1],步长为-2指倒着数 array([ 5, 101])
- 09
>>> x=np.arange(10,1,-1)#arange函数类似于列表操作,从10倒数取到1,步长为-1 >>> x array([10, 9, 8, 7, 6, 5, 4, 3, 2])
- 10
>>> b=x[[3,3,-3,8]]#获取数组x中下标为3、3、1、8的4个元素,组成新的数组,下标可以是负数 >>> b array([7, 7, 4, 2])
- 11
>>> b[2]=100#通过赋值改变数组 >>> b array([ 7, 7, 100, 2])#数组b发生改变 >>> x#x不会变化 array([10, 9, 8, 7, 6, 5, 4, 3, 2]) >>> x[[3,5,1]]=-1,-2,-3#通过赋值修改数组 >>> x array([10, -3, 8, -1, 6, -2, 4, 3, 2]) >>> np.array([3,3,1,8]) array([3, 3, 1, 8]) >>> x[np.array(np.array([3,3,1,8]))] array([7, 7, 9, 2])
- 12
>>> x[np.array([[3,3,1,8],[3,3,-3,8]])]#二维的情况 array([[7, 7, 9, 2], [7, 7, 4, 2]]) >>> x[[3,3,1,8,3,3,-3,8]].reshape(2,4) # 改变数组形状 array([[7, 7, 9, 2], [7, 7, 4, 2]])
- 13
array([5, 4, 3, 2, 1]) >>> x[np.array([True,False,True,False])] array([5, 3]) >>> x[np.array([True,False,True,False,False])]#布尔数组中下标为0、2 的元素为True,因此获取数组x 中下标为0、2 的元素。 array([5, 3]) >>> x[[True, False, True, False, False]] array([4, 5, 4, 5, 5]) >>> # 如果是布尔列表,则把True 当作1, False 当作0,按照整数序列方式获取数组x 中的元素 >>> # 布尔数组下标也可以用来修改元素,True为修改,False为不修改 >>> x[np.array([True, False, True, True])] = -1, -2, -3 >>> x array([-1, 4, -2, -3, 1])