数值缺失的numpy点积

All*_*ang 3 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))
Run Code Online (Sandbox Code Playgroud)

Div*_*kar 5

我们可以使用np.nansum总结NaNs在逐元素相乘之后忽略的值-

np.nansum(v1*v2)
Run Code Online (Sandbox Code Playgroud)

样品运行-

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
Run Code Online (Sandbox Code Playgroud)