python数据分析库numpy:修改数组中的数值

  1. 切片赋值

    t1 = np.arange(20).reshape(4,5)
    t1[:,1:3] = 0  #将t1中的第2列到第3列改为0
    print(t1)
    
    输出:
    [[ 0  0  0  3  4]
     [ 5  0  0  8  9]
     [10  0  0 13 14]
     [15  0  0 18 19]]
    
  2. 布尔索引

    布尔索引通过布尔运算(例如比较运算符)生成一个布尔数组,借此索引符合指定条件的数组元素。

    首先生成一个数组t1:

    t1 = np.arange(20).reshape(4,5)
    

    t1>10对应的布尔数组:

    t1>10
    array([[False, False, False, False, False],
           [False, False, False, False, False],
           [False,  True,  True,  True,  True],
           [ True,  True,  True,  True,  True]])
    

    赋值操作:

    t1[t1>10] = 0  #将大于10的数改为0
    print(t1)
    
    输出:
    [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
     [10  0  0  0  0]
     [ 0  0  0  0  0]]
    
  3. 三元运算符numpy.where()

    numpy.where() ,注意该方法返回一个新数组,不对原数组进行修改

    t1 = np.arange(20).reshape(4,5)
    t2 = np.where(t1<10,0,1)  #将t1中小于10的改为0,大于10的改为1,接着返回一个新数组储存在t2中
    print(t2)
    
    输出:
    [[0 0 0 0 0]
     [0 0 0 0 0]
     [1 1 1 1 1]
     [1 1 1 1 1]]
    
  4. 裁剪操作array.clip()

    t1 = np.arange(20).reshape(4,5)
    t2 = t1.clip(10,15)  #将t1中小于10的替换为10,大于15的替换为15
    print(t2)
    
    输出:
    [[10 10 10 10 10]
     [10 10 10 10 10]
     [10 11 12 13 14]
     [15 15 15 15 15]]
    

    裁剪操作的另一种写法numpy.clip()

    t2 = np.clip(t1,10,15)
    

    另外,该方法无法替换数组中的nan元素

你可能感兴趣的:(python初学)