我有两个 numpy 数组 NS、EW 来总结。他们每个人在不同的位置都有缺失值,比如
NS = array([[ 1., 2., nan],
[ 4., 5., nan],
[ 6., nan, nan]])
EW = array([[ 1., 2., nan],
[ 4., nan, nan],
[ 6., nan, 9.]]
如何以 numpy 方式执行求和运算,如果一个数组在某个位置有 nan,则将 nan 视为零,如果两个数组在同一位置都有 nan,则保留 nan。
我期望看到的结果是
SUM = array([[ 2., 4., nan],
[ 8., 5., nan],
[ 12., nan, 9.]])
当我尝试时
SUM=np.add(NS,EW)
它给了我
SUM=array([[ 2., 4., nan],
[ 8., nan, nan],
[ 12., nan, nan]])
当我尝试时
SUM = np.nansum(np.dstack((NS,EW)),2)
它给了我
SUM=array([[ 2., 4., 0.],
[ 8., 5., 0.],
[ 12., 0., 9.]])
当然,我可以通过进行元素级操作来实现我的目标,
for i in range(np.size(NS,0)):
for j in range(np.size(NS,1)):
if np.isnan(NS[i,j]) and np.isnan(EW[i,j]):
SUM[i,j] = np.nan
elif np.isnan(NS[i,j]):
SUM[i,j] = EW[i,j]
elif np.isnan(EW[i,j]):
SUM[i,j] = NS[i,j]
else:
SUM[i,j] = NS[i,j]+EW[i,j]
但它很慢。所以我正在寻找一个更numpy的解决方案来解决这个问题。
提前感谢您的帮助!