Как получить среднее из матрицы [массив] - PullRequest
0 голосов
/ 03 мая 2018

(Перед началом я использую Ruby 1.8.7, поэтому я не смогу использовать причудливые вещи.)

Как видно из названия, я хочу вычислить среднее значение столбца или строки. Но я даже не могу найти способ просмотреть / перебрать матричный вид массива из сети.

Допустим, у вас есть это

require 'mathn'

m = Matrix[[1,2,3],[4,5,6],[7,8,9]]

Каким-то образом способ, которым я перебираю простой массив 3х3, не работает с матричной формой массива (или, может быть, просто мой код странный). Каков правильный способ сделать это? Кроме того, есть ли синтаксис, который вычисляет среднее по строке и столбцу матрицы ??

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Если вы хотите вычислить все средние значения по строкам и / или все средние значения по столбцам, вы можете сделать следующее.

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]

См. Матрица и Вектор .

0 голосов
/ 03 мая 2018

Вот один из способов вычисления среднего значения для конкретной строки или столбца в данной матрице:

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

Надеюсь, это поможет!

...