经验正交函数 (EOF)
https://blog.csdn.net/tk20190411/article/details/120524784
def EOF(data): ##m*t,m个站,t时间点
row,col=data2.shape[0],data2.shape[1]
mean = np.repeat(data.mean(axis=1), col).reshape(row, col)
data=data-mean
C = np.dot(data2, data2.T) / col
from scipy import linalg
lambd, v = linalg.eigh(C) # 空间模态矩阵 行代表着某个站点, 列代表第几空间模态
# 根据特征值对特征向量升序排序
index = np.argsort(lambd)[::-1]
lambd=lambd[index] ##特征值从大到小
v = v[:, index] ##特征向量按lambd从大到小
var_contrib=[] ##前k个特征值贡献%
var_contrib=[sum(lambd[:i+1])/sum(lambd) for i in range(len(lambd))]
return lambd,v,var_contrib
浙公网安备 33010602011771号