2017-06-20 92 views
2

如何做兩個向量可能缺失值的numpy點積?這似乎需要許多額外的步驟,有更簡單的方法來做到這一點?:缺失值的numpy點積

v1 = np.array([1,4,2,np.nan,3]) 
v2 = np.array([np.nan,np.nan,2,4,1]) 
np.where(np.isnan(v1),0,v1).dot(np.where(np.isnan(v2),0,v2)) 

回答

3

我們可以使用np.nansum總結忽略逐元素相乘後NaNs值 -

np.nansum(v1*v2) 

樣品運行 -

In [109]: v1 
Out[109]: array([ 1., 4., 2., nan, 3.]) 

In [110]: v2 
Out[110]: array([ nan, nan, 2., 4., 1.]) 

In [111]: np.where(np.isnan(v1),0,v1).dot(np.where(np.isnan(v2),0,v2)) 
Out[111]: 7.0 

In [115]: v1*v2 
Out[115]: array([ nan, nan, 4., nan, 3.]) 

In [116]: np.nansum(v1*v2) 
Out[116]: 7.0 
+0

雖然我在傳遞熊貓系列時遇到以下錯誤,但我沒有得到我的答案:TypeError:'Series'對象無法解釋作爲一個整數' –

+0

@AllenWang添加樣品熊貓系列成問題? – Divakar

+0

Nvm,我認爲這是一個錯字 –