作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确信有一个简单的方法可以做到这一点,但我没有找到。
本质上,我想做的是利用 Java DoubleStream 来计算各种事物,例如值数组的平均值。但是,数组可能包含 NaN 值,这当然会导致结果也是 NaN。所以我想以某种方式,在一行中过滤掉 NaN 并计算平均值。
例如,此代码将产生 NaN 的结果,这是我不想要的。
import java.util.stream.DoubleStream;
public class StreamTests {
public static void main(String[] args) {
double[] x = {3.14159, 42, 2.71828, Double.NaN};
double mean = DoubleStream.of(x).average().getAsDouble();
System.out.println(mean);
}
}
我想做的更像这样:
import java.util.stream.DoubleStream;
public class StreamTests {
public static void main(String[] args) {
double[] x = {3.14159, 42, 2.71828, Double.NaN};
double mean = DoubleStream.of(x).ifNotNaN().average().getAsDouble();
System.out.println(mean);
}
}
例如,我可以用 Python 做这样的事情:
import math
x = [3.14159, 42, 2.71828, float('NaN')]
mean = sum([i for i in x if not math.isnan(i)]) / len(x)
print(mean)
我知道为什么在第一个代码块中产生 NaN,只是标准的浮点行为。而且我也知道我可以循环遍历这些值并检查每个值,等等,但这正是我要避免的。我希望代码更加紧凑和优雅。
最佳答案
使用 filter
method ,传入一个使用 Double.isNaN
的 DoublePredicate
过滤掉它们。
double mean = DoubleStream.of(x)
.filter(d -> !Double.isNaN(d))
.average().getAsDouble();
关于java - 使用 Java DoubleStream 过滤掉 NaN 查找平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58295338/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!