numpy 使用总结

  1. # 掩码数据 -- 表示掩码 ,作用:为了存储时所占用内存更小
    A = np.array(range(20, 30))
    a_mask = A < 25
    print(a_mask)   # [ True  True  True  True False False False False False False]
    ym = np.ma.array(A, mask=a_mask, fill_value=-999999)  # 默认填充值
    print(ym)
  2. # 打印掩码类型
    print(ym.mask)
  3. # 判断元素是否是掩码 --
    print(ym[0] is np.ma.masked)
  4. # 确定输入是否具有掩码值
    print(np.ma.is_masked(ym))
  5. # 此函数不检查输入内容,仅检查类型为MaskType    如 ym.mask
    print(np.ma.is_mask(ym.mask))
  6. # 合并数组   
    #TODO 注意这里的合并数组必须放到一个集合中 也可以说是按行或列拼接为新数组
    AA = np.concatenate([A, np.array([np.nan, np.nan])])
    print(AA)
  7. # 获取值为 nan 的
    print(AA[np.isnan(AA)])
  8. # 获取值不为 nan 的
    print(AA[~np.isnan(AA)])
  9. # 判断 24 < AA < 28 的值
    # TODO 记得加括号哦
    print(AA[(AA > 24) & (AA < 28)])
  10. # 获取判断是掩码数据的bool值列表
    
    
    isym = np.array(list(map(lambda v: v is np.ma.masked, ym)))
    print(isym)
    # 获取掩码值的下标
    isymind = np.where(isym == True)
    # 这种方法就不用上面的两步才能完成了 isymind = np.where(ym == np.ma.masked) print(isymind)
    # 修改掩码值为 0 ym[isymind[0]] = 0 print(ym)
    
    
     
  11. 二维数据判断大于小于,并取值
    # lats, lons, data 都是二维数据
    t_index = np.logical_and(lats >= lat[0], lats <= lat[1])
    n_index = np.logical_and(lons >= lon[0], lons <= lon[1])
    index = np.logical_and(t_index == True, n_index == True)
    tidx = np.where(index == True)
    print(tidx)
    la = lats[tidx]
    lo = lons[tidx]
    dd = data[tidx]
    print(la)
    print(lo)
    print(dd)
  12. 行列互换 

    # 生成倒序数组
    print(np.linspace(10,1,10))
    # 行列互换
    s = np.arange(20).reshape(4,5)
    print(s)
    print(s.T)
  13. dtype函数创建"新"类型

    from numpy import *
    #创建一个数据类型 t
    t = dtype([("name", str_, 40), ("age", uint8), ("math", uint8)])
    # 创建数组x,数组元素类型为 t
    x = array([("liming", 35, 78),("yangmi", 31, 58)], dtype = t)
    print (x)
    print (x[0]["name"])
    print (x[1]["math"])
    
    
    t = dtype([("name", "S40"), ("age", "u8"), ("math", "f")])
    y = array([("liming", 44, 98),("yangmi", 32, 58)], dtype = t)
    print(t)
    print (y[1]["age"])
    print (y["age"])
    print (y[0])
    
    # [('liming', 35, 78) ('yangmi', 31, 58)]
    # liming
    # 58

    # [('name', 'S40'), ('age', '<u8'), ('math', '<f4')] # 32 # [44 32] # (b'liming', 44, 98.) # 从结果可以看出,对于这种复合的类型可以按行(记录)访问print y[0],也可以按列(字段)访问print y["age"]

     

  14. extract 根据某个条件从数组中抽取元素,返回满条件的元素。
    import numpy as np 
     
    x = np.arange(9.).reshape(3,  3)  
    print ('我们的数组是:')
    print (x)
    # 定义条件, 选择偶数元素
    condition = np.mod(x,2)  ==  0  
    print ('按元素的条件值:')
    print (condition)
    print ('使用条件提取元素:')
    print (np.extract(condition, x))
  15. argwhere  where  查找等于指定元素的下标
    lat = np.array([1,2,3,60,70,80])
    print(np.argwhere(lat == 60))
    print(np.where(lat == 60))
  16. flip 数组上下左右反转
    np.flip()
  17. maxinum    X 与 Y 逐位比较取其大者
    # 数据每个值和 0 比较,取大值(data中值大于 0,返回大值 data中值,data中值小于0,返回大值 0)
    data = np.maximum(data, 0)
          
 
         仅供参考,欢迎评论交流
原文地址:https://www.cnblogs.com/luochunxi/p/14132212.html