方式1:
先提取矩阵中非零项;再误差计算
obs_A = A.ravel()[np.flatnonzero(A)]
obs_X = X.ravel()[np.flatnonzero(A)]
error = np.linalg.norm(obs_A - obs_X)
方式2:
利用掩码矩阵计算
# mask=~np.isnana(A)
mask=(A==0)
mask=~mask
error=np.linalg.norm(mask*A-maks*X)
矩阵中nan值与0值的互相转换
data=np.array([[np.nan,0,1,8],[0,9,6,np.nan]])
data[np.isnan(data)]=0 # 将data中的nan值转为0值
data[data==0]=np.nan # 将data中的0值转为nan值