pythonrvs函数 python函数reverse

Python气象数据处理与绘图(2):常用数据计算方法对于气象绘图来讲,第一步是对数据的处理,通过各类公式,或者统计方法将原始数据处理为目标数据 。
按照气象统计课程的内容,pythonrvs函数我给出了一些常用到的统计方法的对应函数:
在计算气候态 , 区域平均时均要使用到求均值函数,对应NCL中的dim_average函数,在python中通常使用np.mean()函数
numpy.mean(a, axis, dtype)
假设a为[time,lat,lon]的数据,那么
需要特别注意的是,气象数据中常有缺测,在NCL中 , 使用求均值函数会自动略过,而在python中,当任意一数与缺测(np.nan)计算的结果均为np.nan,比如求[1,2,3,4,np.nan]的平均值,结果为np.nan
因此,当数据存在缺测数据时,通常使用np.nanmean()函数,用法同上,此时[1,2,3,4,np.nan]的平均值为(1+2+3+4)/4 = 2.5
同样的,求某数组最大最小值时也有np.nanmax(), np.nanmin()函数来补充np.max(), np.min()的不足 。
其pythonrvs函数他很多np的计算函数也可以通过在前边加‘nan’来使用 。
另外,
也可以直接将a中缺失值全部填充为0 。
np.std(a, axis, dtype)
用法同np.mean()
在NCL中有直接求数据标准化的函数dim_standardize()
其实也就是一行的事,根据需要指定维度即可 。
皮尔逊相关系数:
相关可以说是气象科研中最常用的方法之一了 , numpy函数中的np.corrcoef(x, y)就可以实现相关计算 。但是在这里我推荐scipy.stats中的函数来计算相关系数:
这个函数缺点和有点都很明显,优点是可以直接返回相关系数R及其P值,这避免了我们进一步计算置信度 。而缺点则是该函数只支持两个一维数组的计算,也就是说当我们需要计算一个场和一个序列的相关时,我们需要循环来实现 。
其中a[time,lat,lon] , b[time]
(NCL中为regcoef()函数)
同样推荐Scipy库中的stats.linregress(x,y)函数:
slop:回归斜率
intercept:回归截距
r_value:相关系数
p_value: P值
std_err:估计标准误差
直接可以输出P值,同样省去了做置信度检验的过程,遗憾的是仍需同相关系数一样循环计算 。
如何利用python中的威布尔分布numpy.random.weibull()函数生成三参数的随机数序列你好 , 有两个办法:
一个是自己写一个函数
def Nweibull(a,size, scale)
return scale*numpy.random.weibull(a,size)
另外一个是换一个库,用scipy.stats.weibull_min,他需要三个参数:
from scipy.stats import weibull_min
n = 100# number of samples
k = 2.4# shape
lam = 5# scale
x = weibull_min.rvs(k, loc=0, scale=lam, size=n)
深入理解Python reduce函数 例如上面的例子,实现一个整形集合的累加 。假设lst = [1,2,3,4,5],实现累加的方式有很多:
第一种:用sum函数 。
sum(lst)
第二种:循环方式 。
def customer_sum(lst):
result = 0
for x in lst:
result+=x
return result
def customer_sum(lst):
result = 0
while lst:
temp = lst.pop(0)
result+=temp
return result
ifname ==" main ":
lst = [1,2,3,4,5]
print customer_sum(lst)
第三种:递推求和
def add(lst,result):
if lst:
temp = lst.pop(0)
temp+=result
return add(lst,temp)
else:
return result
ifname ==" main ":
lst = [1,2,3,4,5]
print add(lst,0)
第四种:reduce方式
lst = [1,2,3,4,5]
print reduce(lambda x,y:x+y,lst)
lst = [1,2,3,4,5]
print reduce(lambda x,y:x+y,lst,0)
def add(x,y):
return x+y
print reduce(add, lst)

推荐阅读