Я пытаюсь найти индексы минимальных значений в Matrix<float>
с MathNet.Numerics
, но только для значений, которые соответствуют определенному условию (в данном случае value >= 0
). Я могу найти одно из минимальных фактических значений вроде этого:
var mat = Matrix<float>.Build.DenseOfArray(new float[,] {
{2, 3, 1},
{3, -1, 5},
{1, 4, 3}
});
var min = mat.Enumerate().Where(x => x >= 0).Min();
Но я хотел бы найти индексы обеих единиц (а не -1). Таким образом, результат должен быть [0,2] и [2,0].
ОТВЕТ:
Я нашел возможный способ сделать это, не уверен, что это это лучший / самый быстрый способ:
var min = mat.Enumerate().Where(x => x >= 0).Min();
var allMin = mat.EnumerateIndexed().Where(x => x.Item3 == min).ToList();