【问题标题】:Julia : How to fill a matrix row by row in julia朱莉娅:如何在朱莉娅中逐行填充矩阵
【发布时间】:2016-07-11 13:19:15
【问题描述】:

我有 200 个向量;每个长度为10000。

我想填充一个矩阵,使每一行代表一个向量。

【问题讨论】:

    标签: matrix vector julia


    【解决方案1】:

    如果您的向量已经存储在数组中,那么您可以在此处使用vcat( )

    A = [rand(10000)'  for idx in 1:200]
    B = vcat(A...)
    

    【讨论】:

      【解决方案2】:

      Julia 以列优先顺序存储矩阵,因此您将不得不稍微适应一下

      如果你有 200 个长度为 100000 的向量,你应该首先创建一个空向量,a = [],这将是你的矩阵 然后你必须将第一个向量 vcat 到你的空向量,就像这样

      v = your vectors, however they are defined 
      a = []
      a = vcat(a, v[1])
      

      然后你可以遍历向量 2:200 by

      for i in 2:200
          a = hcat(a,v[i])
      end 
      

      最后转置一个

      a = a'
      

      或者,你可以这样做

      a = zeros(200,10000)
      
      for i in 1:length(v)
          a[i,:] = v[i]
      end 
      

      但我想这不会那么快,如果性能完全是一个问题,因为正如我所说,朱莉娅按列主要顺序存储,所以访问会更慢

      编辑来自reschu的评论

      a = zeros(10000,200)
      
      for i in 1:length(v)
          a[:,i] = v[i]
      end 
      
      a = a'
      

      【讨论】:

      • 我猜第二个版本更快。连接将在每次​​迭代时调整数组 a 的大小。无论如何,您可以预先分配一个 10000x200 矩阵,遍历列,然后转置它。如果你想确定:计时。
      猜你喜欢
      • 2018-11-27
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2014-12-31
      • 2017-01-15
      相关资源
      最近更新 更多