加强numpy 1.8和1.9 nansum之间的兼容性?

加强numpy 1.8和1.9 nansum之间的兼容性?,numpy,Numpy,我的代码需要独立于numpy版本,但底层的np.nansum函数已经改变了行为,使得np.nansum([np.nan,np.nan])在1.9中是0.0,在1.8中是nan。在Numpy 1.8中,nansum被定义为: a,mask=\u replace\u nan(a,0) 如果掩码为“无”: 返回np.sum(a,axis=axis,dtype=dtype,out=out,keepdims=keepdims) 掩码=np.all(掩码,轴=轴,keepdims=keepdims) tot

我的代码需要独立于numpy版本,但底层的
np.nansum
函数已经改变了行为,使得
np.nansum([np.nan,np.nan])
在1.9中是
0.0
,在1.8中是
nan
。在Numpy 1.8中,nansum被定义为:

a,mask=\u replace\u nan(a,0)
如果掩码为“无”:
返回np.sum(a,axis=axis,dtype=dtype,out=out,keepdims=keepdims)
掩码=np.all(掩码,轴=轴,keepdims=keepdims)
tot=np.sum(a,axis=axis,dtype=dtype,out=out,keepdims=keepdims)
如果np.有(屏蔽):
tot=_copyto(tot,np.nan,掩码)
warnings.warn(“在Numpy 1.9中,沿空片的和将为零。”,
未来警告)
返回总数
在Numpy 1.9中,它是:

a,mask=\u replace\u nan(a,0)
返回np.sum(a,axis=axis,dtype=dtype,out=out,keepdims=keepdims)
我认为没有办法让新的
nansum
以旧的方式运行,但是考虑到原来的
nansum
代码没有那么长,如果你想保留1.8之前的行为,你可以只包含一份代码副本(没有警告)吗


请注意,
\u copyto
可以导入
numpy.lib.nan函数

。这并不能解决用户直接将
np.nansum
传递到我们的一个函数中的问题,但至少可以通过复制所有np 1.8 nansum函数使现有代码的行为保持一致