从求和中忽略 NaN
Posted
技术标签:
【中文标题】从求和中忽略 NaN【英文标题】:Ignoring NaN from summation 【发布时间】:2015-02-10 06:10:46 【问题描述】:我想总结 10 个双变量,但是其中一些变量可能包含“NaN”。有没有办法从总和中忽略带有“NaN”的那些。现在我有一个像下面这样的简单添加,但是它为 SumLiq.. 变量分配了一个“NaN”值。
double SumLiqPerTimeStamp = l2_msg.size0 + l2_msg.size1 + l2_msg.size2 + l2_msg.size3
+l2_msg.size4 + l2_msg.size5 + l2_msg.size6 + l2_msg.size7 + l2_msg.size8 + l2_msg.size9;
有没有一种快速有效的方法来检查“NaN”,而无需对每个都执行 if 语句?
【问题讨论】:
【参考方案1】:如果输入为 NaN,则使用返回零的扩展方法:
public static double Value(this double input)
return input == Double.NaN ? 0 : input;
然后将您的值相加为
var sum = l2_msg.size0.Value() + l2_msg.size1.Value() + ...
【讨论】:
【参考方案2】:在你的msg
类型中添加一个属性Size
,它会在返回之前检查值,如果是NaN则返回0。
【讨论】:
我无法编辑类,这是我用于供应商产品@Eugene Sh 的 api。 你总是可以做一个包装,但它可能是一个超调。【参考方案3】:N也许你可以把它们放在一个数组中并得到Sum()
:
double SumLiqPerTimeStamp = new double[] l2_msg.size0 , l2_msg.size1 , l2_msg.size2 , l2_msg.size3
,l2_msg.size4 , l2_msg.size5 , l2_msg.size6 , l2_msg.size7 , l2_msg.size8 , l2_msg.size9 .Where( x => !double.IsNaN(x) ).Sum();
【讨论】:
以上是关于从求和中忽略 NaN的主要内容,如果未能解决你的问题,请参考以下文章
在 gnuplot 中,“缺少设置数据文件”,如何忽略“nan”和“-nan”?
如何在 pandas DataFrame 中忽略滚动平均值计算的 NaN 值?