2012-01-18 10 views
1

CSVからRubyにデータセットを配列の配列としてインポートしました(各行は配列です)。私は0から1までの各列を正規化したいと思います。したがって、各列の最大値と最小値を求めなければなりません。これを行う簡単な方法はありますか?または、各行の各列の値を解析する必要がありますか?RubyのCSV列を正規化する

ありがとうございます!

答えて

2

Array#transposeを使用すると、内部配列を列にしてからEnumerable#min#maxを使用して値を取得できます。

copy = csv_data.transpose 
copy.each do |a| #do whatever you need here 
    a.min 
    a.max 
end 

またはこの

copy = csv_data.transpose 
arr_min = copy.map(&:min) # returns an array of the min values 
arr_max = copy.map(&:max) # returns an array of the max values 
+0

グレート答えのようなもの。スピードが問題であれば、1回の「each」反復を使用してminとmaxの両方を計算することによって、実行時間を(あまり優雅に)半分にすることができます。 (しかし、おそらく、min/maxがC言語で実装されているとは限りません) – Phrogz