簡體   English   中英

如何從矩陣中獲取平均值[數組]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM