我有兩個numpy數組NS,EW來加總。他們每個人都有不同位置的缺失值,像在numpy數組求和中將nan視爲零除了所有數組中的nan
NS = array([[ 1., 2., nan],
[ 4., 5., nan],
[ 6., nan, nan]])
EW = array([[ 1., 2., nan],
[ 4., nan, nan],
[ 6., nan, 9.]]
我如何能在numpy的方式進行求和操作,這將把南爲零,如果一個數組楠在一個位置,並保持楠如果兩個數組在同一位置有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]
但它是非常緩慢的。所以我正在尋找一種更加樸素的解決方案來解決這個問題。
感謝您的幫助!
它完美的工作,也比我使用的元素級操作快200倍。感謝您的幫助! – Superstar