Python中数组索引和修改方式详解(包括二维数组索引、布尔索引和增删行列)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、一般索引
  • 一维数组
  • 二维数组
  • 二、布尔索引
  • 数组的修改
  • 删除(行或列)
  • 增加(行或列)

  • 前言

    Python中数组的索引方式(二维数组索引,布尔索引)和数组修改(行,列)

    一、一般索引

    一维数组

    import numpy as np
    a=np.array([1,2,3,4,5,6])
    
    print(a[[1,3,5]])   #一维数组索引,输出[2 4 6]
    print(a[[-1,-2,-3]])    #一维数组索引,输出[6,5,4]
    

    二维数组

    b=np.array(((1,2,3,4,5),(6,7,8,9,10),(11,12,13,14,15),(16,17,18,19,20)))
    
    print(b[2])     #
    输出第三行全部元素:[11 12 13 14 15]
    print(b[2,:])   #输出第三行全部元素:[11 12 13 14 15]
    print(b[:,1])   #输出第二列所有元素:[ 2  7 12 17]
    

    b[2]和b[2,:]输出的结果是一样的,那是否能说明他们是等价的呢?答案是否
    b[2] 返回的是一个一维数组,包含了二维数组 b 的第三行的所有元素。
    b[2,:] 返回的是一个一维数组,也包含了二维数组 b 的第三行的所有元素,但是保持了二维数组的结构,即返回一个行向量。

    print(b[[1,2],1:3])     #输出第2、3行,第2、3列的元素:[[ 7  8][12 13]]
    print(b[1:3,1:3])       #输出第2、3行,第2、3列的元素:[[ 7  8][12 13]]
    
    

    二、布尔索引

    from numpy import array, nan, isnan
    a = array([[1, nan, 2],[4, nan, 3]])
    b = a[~isnan(a)]
    print(b)
    

    先介绍下引进的几个函数的用法:
    nan 提供了处理包含缺失值的数据的方法,如过滤、填充等。
    isnan函数中:
    如果参数数组中对应位置的元素是 NaN,则返回的布尔数组相应位置的元素为 True。
    如果参数数组中对应位置的元素不是 NaN,则返回的布尔数组相应位置的元素为 False。
    在这个例子中,isnan(a) 返回的布尔掩码是:

    [[False  True False]
     [False  True False]]
    

    ~isnan(a)对结果进行取反:

    [[ True False  True]
     [ True False  True]]
    

    print(b):

    [1. 2. 4. 6.]
    

    为什么数组中每个元素后面有个点? 是因为在 NumPy 中,数组默认情况下被创建为浮点数类型(float)。


    数组的修改

    删除(行或列)

    import numpy as np
    x = np.array([[1,2],[3,4],[5,6]])
    y1 = np.delete(x,1,axis=0)	#删除第二行元素[3,4]
    y2= np.delete(x,1,axis=1)	#删除第二列的元素
    print(y1)	
    print("\n")
    print(y2)
    

    axis=0代表的是行,1代表的是列
    输出结果:

    [[1 2]
     [5 6]]
    
    
    [[1]
     [3]
     [5]]
    

    增加(行或列)

    import numpy as np
    x = np.array([[1,2],[3,4],[5,6]])
    a = np.append(x,[[7,8]], axis=0)  #增加一行
    b = np.append(x,[[9],[10],[11]],axis=1) #增加一列
    print(a)
    print("\n")
    print(b)
    

    输出结果:

    [[1 2]
     [3 4]
     [5 6]
     [7 8]]
    
    
    [[ 1  2  9]
     [ 3  4 10]
     [ 5  6 11]]
    

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中数组索引和修改方式详解(包括二维数组索引、布尔索引和增删行列)

    发表回复