-
# 掩码数据 -- 表示掩码 ,作用:为了存储时所占用内存更小
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)
-
# 打印掩码类型
print(ym.mask)
-
# 判断元素是否是掩码 --
print(ym[0] is np.ma.masked)
-
# 确定输入是否具有掩码值
print(np.ma.is_masked(ym))
-
# 此函数不检查输入内容,仅检查类型为MaskType 如 ym.mask
print(np.ma.is_mask(ym.mask))
-
# 合并数组
#TODO 注意这里的合并数组必须放到一个集合中 也可以说是按行或列拼接为新数组 AA = np.concatenate([A, np.array([np.nan, np.nan])]) print(AA)
-
# 获取值为 nan 的
print(AA[np.isnan(AA)])
-
# 获取值不为 nan 的
print(AA[~np.isnan(AA)])
-
# 判断 24 < AA < 28 的值
# TODO 记得加括号哦 print(AA[(AA > 24) & (AA < 28)])
-
# 获取判断是掩码数据的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) - 二维数据判断大于小于,并取值
# 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)
-
行列互换
# 生成倒序数组 print(np.linspace(10,1,10)) # 行列互换 s = np.arange(20).reshape(4,5) print(s) print(s.T)
-
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"] - 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))
- argwhere where 查找等于指定元素的下标
lat = np.array([1,2,3,60,70,80]) print(np.argwhere(lat == 60)) print(np.where(lat == 60))
-
flip 数组上下左右反转
np.flip()
- maxinum X 与 Y 逐位比较取其大者
# 数据每个值和 0 比较,取大值(data中值大于 0,返回大值 data中值,data中值小于0,返回大值 0) data = np.maximum(data, 0)