[英]How to get an average from matrix[array]
(在开始之前,我正在使用Ruby 1.8.7,因此我将无法使用花哨的东西。)
如标题所述,我想计算列或行的平均值。 但是,我什至找不到从网上遍历/迭代矩阵形式的数组的方法。
假设您有这个
require 'mathn'
m = Matrix[[1,2,3],[4,5,6],[7,8,9]]
以某种方式,我迭代一个简单的3x3数组的方法不适用于Matrix形式的数组(或者可能只是我的代码很奇怪)。什么是正确的方法? 另外,是否有一种语法可以计算矩阵的行和列平均值?
这是一种计算给定矩阵中特定行或列的平均值的一种方法:
require 'matrix'
m = Matrix[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def vector_average(matrix, vector_type, vector_index)
vector = matrix.send(vector_type, vector_index)
vector.inject(:+) / vector.size.to_f
end
# Average of first row
vector_average(m, :row, 0)
# => 2.0
# Average of second column
vector_average(m, :column, 1)
# => 5.0
希望这可以帮助!
如果您希望计算所有行平均值和/或所有列平均值,则可以执行以下操作。
require 'matrix'
def row_averages(m)
(m * Vector[*[1.0/m.column_size]*m.column_size]).to_a
end
def col_averages(m)
row_averages(m.transpose)
end
例如,
m = Matrix[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
row_averages(m)
#=> [2.0, 5.0, 8.0]
col_averages(m)
#=> [3.9999999999999996, 5.0, 6.0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.