我使用np.ma模块计算两个重叠图像数组的协方差,这些数组中包含noData值。代码如下:
import numpy as np
arr1 = np.array([1638,1753,1601,1819,-9999,1627,1400,1379,1055])
arr2 = np.array([-9999,1455,1973,1330,1915,1842,1816,1218,-9999])
images = np.vstack((arr1.ravel(),arr2.ravel()))
images = np.ma.array(images , mask=images ==-9999)
cov_mat = np.ma.cov(images ,bias=True)
协方差矩阵的输出是:
[[53070.25 -8273.07142857143]
[-8273.07142857143 80860.40816326531]]
我遇到了结果问题,第一个值是使用arr1计算的,观察数等于8(因为只有一个noData值)。最后一个值是使用arr2计算的,但观察的数量是7(两个noData值)。
有没有办法指定cov函数在计算协方差时只取最大观察数来进行除法,还是必须手动执行操作?