2012-01-18 20 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

偉大的答案。請注意,如果速度是一個問題,則可以使用單個「每個」迭代來計算最小值和最大值,從而將運行時間減半(不太優雅)。 (但是,也許不是,因爲最小/最大值是在C中實現的) – Phrogz 2012-01-19 00:31:45