在ILNumerics中如何基于多个条件筛选数组中的行
多条件数组行筛选的正确实现
报错原因
你使用的是支持full切片语法的C#数值计算库(如MathNet.Numerics)的索引规则,多条件组合时不能使用C#原生短路逻辑运算符:
- 原生
&&是短路逻辑与,仅能返回单个布尔值,无法对两个逐元素判断生成的布尔数组做按位置的与运算,因此触发编译错误 - 多条件组合需要改用逐元素逻辑运算符,同时每个独立条件要用括号包裹,避免运算优先级混乱
修正后的代码
Array<double> A = new double[,] { { 1, 9, 20 }, { 2, 11, 21 }, { 9, 12, 21 }, { 9, 13, 23 }, { 9, 14, 24 }, { 10, 12, 21 }, { 14, 13, 23 }, { 16, 14, 24 }, { 19, 12, 21 }, { 27, 13, 23 }, { 23, 14, 24 }, { 6, 15, 25 } }; Array<double> matching = A[(A[full, 0] % 3 == 0) & (A[full, 1] > 10), full];
扩展规则
如果需要添加更多筛选条件,遵循以下规则即可:
- 每个独立筛选条件用括号包裹
- 逐元素逻辑与用
&、逐元素逻辑或用|、逐元素逻辑非用!
内容的提问来源于stack exchange,提问作者user17352413
相关产品推荐
相关产品推荐

