c# 相当于 Numpy Where

c# equivalent of Numpy Where

如何将以下示例扩展为 return 布尔数组:

例如;

int[] data = { 1, 2, 5, 6 };
int[] data1 = { 2, 4, 6, 1};
int[] data2 = { 3, 2, 3, 0};
var results = Enumerable.Range(0, data.Length).Where(i => data[i] > 2 && data1[i] < 7 && data2[i] > 1 );

得到的结果={ 2 }是三个数组上满足各自条件的索引

预期结果:{False, False, True, False} --> 这个结果如何形成。

目前使用的方法(冗长不整洁):

for(int j = 0; j < h1.Length; j++)
            {
                if (h1[j] < 0.0 && h2[j] > 0.0 && h3[j] > threshold == true)
                {
                    result[j] = true;
                }
                else
                {
                    result[j] = false;
                }
            }

参考:[1]

而不是 Where() 来过滤集合,使用 Select() 来投影结果:

var results = Enumerable.Range(0, data.Length).Select(i => data[i] > 2 && data1[i] < 7 && data2[i] > 1);