gpt4 book ai didi

C# 检查二维数组中的任何元素是 NaN 还是 Infinity 的最佳方法

转载 作者:行者123 更新时间:2023-11-30 20:00:57 24 4
gpt4 key购买 nike

有谁知道检查二维数组中的元素是否为 NaN 或 Infinity 的最佳方法是什么?我的数组可能很大,所以我不想循环遍历它。我正在考虑使用

double[,] myArray;
if ( !double.IsNaN(myArray.Cast<double>().Min() ) && !double.IsInfinity( myArray.Cast<double>().Min() )
{
// have finite values as elements
}

用于 NaN 和无穷大检查。我只需要知道数组中是否有任何元素是 NaN 或无穷大,所以我认为只需检查数组中的最小元素就可以解决 NaN 和无穷大的问题。有一个更好的方法吗?感谢您提供的任何帮助或建议。

最佳答案

我个人会使用:

if (!myArray.Cast<double>().Any(d => double.IsNaN(d) || double.IsInfinity(d)))
{
// All have correct values...

除了更短之外,这应该接近手动编写循环的速度,因为它保持单次通过值,并在达到“坏”值时立即退出(因为 Any( ) 将停止评估失败)。


Since my array can get large, I guess I will write loops to get the better performance/

如果您要处理非常大的数组,一个选择是并行执行此检查:

if (!myArray.Cast<double>().AsParallel()
.Any(d => double.IsNaN(d) || double.IsInfinity(d)))
{
// All have correct values...

对于非常大的数组,这通常会比执行直接循环更好,因为多个内核可以通过 PLINQ 处理分区数据。

关于C# 检查二维数组中的任何元素是 NaN 还是 Infinity 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com