なぜ絶対値形式で最大abs値を持つ配列 'vec'から要素を取得できないのですか?エラーはどこですか?配列CからmaxAbsを取得する#
return vec.Select(Math.Abs).Max();
なぜ絶対値形式で最大abs値を持つ配列 'vec'から要素を取得できないのですか?エラーはどこですか?配列CからmaxAbsを取得する#
return vec.Select(Math.Abs).Max();
あなたは、おそらく、ARGMAX、ないを意味マックス
最大絶対値を持つ要素 ...
LINQの doesnの」そのような方法を提供しますが、簡単にエミュレートすることができます:
var result = vec.Aggregate((a, s) => Math.Abs(a) > Math.Abs(s) ? a : s);
テスト:
int[] vec = new int[] { 1, -3, 2 };
var result = vec.Aggregate((a, s) => Math.Abs(a) > Math.Abs(s) ? a : s);
// The output is "-3" (the element in the array)
Console.Write(result);
編集:あなたは、配列のインデックスを探しているなら、あなたがしなければならないすべては、コードを少し変更することです:
var result = vec
.Select((value, index) => new {
Value = value,
Index = index })
.Aggregate((a, s) => Math.Abs(a.Value) > Math.Abs(s.Value) ? a : s)
.Index;
// Output: "vec[1] == -3"
Console.Write($"vec[{result}] == {vec[result]}");
配列がdouble型を受け取った場合、例:3,1 | 2,1 | 1,1は3を出力しますか? (私の例に続く) –
@JorgeAndré: '[3.1、2.1、1.1]'の結果は '3.1'(配列の要素) –
私の出力は同じですが、私は3を必要としません3.1 。それは私の問題だと私は解決する –
そのコードは私のためにうまく動作します。 'vec'には何がありますか?どうしたの? –
もっと明示する必要があります。書かれているコードは、動作するはずです。あなたはコンパイラのエラーが出ているのですか、それとも期待していない価値を得ていますか?あなたはあなたの質問を精緻化する必要があります。 http://dotnetfiddle.net/を使用して、問題を再現したサンプルプログラムを作成し、そのコード全体を質問に投稿してください。 –
'vec'に要素が含まれていないと失敗する可能性があります。 –