【问题标题】:How do I add columns and rows to a Matrix in Ruby?如何将列和行添加到 Ruby 中的矩阵?
【发布时间】:2012-03-14 21:34:53
【问题描述】:

如果我在 Ruby 中有一个现有的矩阵,我如何添加一列或一行新数据?

我想做的是这样的:

require 'Matrix'
my_matrix = Matrix.diagonal(1,2,3)
my_matrix.append_row!([3,2,1])
my_matrix.append_column!([3,2,1])

有没有办法做到这一点?

【问题讨论】:

    标签: ruby vector matrix


    【解决方案1】:

    由于这样做不是(据我所知)数学意义上的有效矩阵运算,因此没有什么可以做的。你可以创建一个新的矩阵:

    m = Matrix.diagonal(1, 2, 3)
    #=> Matrix[[1, 0, 0], [0, 2, 0], [0, 0, 3]]
    
    Matrix.columns(m.to_a << [4, 5, 6])
    #=> Matrix[[1, 0, 0, 4], [0, 2, 0, 5], [0, 0, 3, 6]]
    
    Matrix.rows(m.to_a << [4, 5, 6])
    #=> Matrix[[1, 0, 0], [0, 2, 0], [0, 0, 3], [4, 5, 6]]
    

    这使用columnsrows 通过添加新数组来创建新矩阵 到原始矩阵的数组表示。

    【讨论】:

    • 小建议:列添加示例有效,因为矩阵是对角对称的。我相信您会希望 Matrix.columns(m.transpose.to_a &lt;&lt; [4,5,6]) 添加一列而不重新排序项目。
    【解决方案2】:

    我怀疑您正在寻找的方法是[hstack][1]vstack

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多