1
我已经将数据集从CSV导入到Ruby中作为数组数组(每行都是数组)。我想将每列的标准化从0到1.因此,我必须找到每列的最大值和最小值。是否有捷径可寻?或者我必须从每一行中解析出每一列的值?正常化Ruby中的CSV列
谢谢!
我已经将数据集从CSV导入到Ruby中作为数组数组(每行都是数组)。我想将每列的标准化从0到1.因此,我必须找到每列的最大值和最小值。是否有捷径可寻?或者我必须从每一行中解析出每一列的值?正常化Ruby中的CSV列
谢谢!
您可以使用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
伟大的答案。请注意,如果速度是一个问题,则可以使用单个“每个”迭代来计算最小值和最大值,从而将运行时间减半(不太优雅)。 (但是,也许不是,因为最小/最大值是在C中实现的) – Phrogz 2012-01-19 00:31:45