首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Julia -将矩阵转换为向量

Julia -将矩阵转换为向量
EN

Stack Overflow用户
提问于 2021-01-26 02:11:09
回答 1查看 347关注 0票数 1

除了分配一个新的向量并用我的矩阵中的一个逐个填充它的值之外,我如何将一个大小为n x m的矩阵调整大小/重新填充为一个大小为n x m的向量,从而推广以下示例:

代码语言:javascript
复制
julia> example_matrix = [i+j for i in 1:3, j in 1:4]
3×4 Array{Int64,2}:
 2  3  4  5
 3  4  5  6
 4  5  6  7

julia> res_vect = [2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7]
12-element Array{Int64,1}:
 2
 3
 4
 3
 4
 5
 4
 5
 6
 5
 6
 7

我的一个想法是:

代码语言:javascript
复制
 res_vect = Int[]
 for j in 1:size(example_matrix,2)
    res_vect = vcat(res_vect, example_matrix[:,j])
 end

我感觉这不是最好的方式,但我不能解释为什么……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 02:20:34

Julia允许你在不复制任何数据的情况下做这类事情:

代码语言:javascript
复制
julia> m = [i+j for i in 1:3, j in 1:4]
3×4 Matrix{Int64}:
 2  3  4  5
 3  4  5  6
 4  5  6  7

julia> m1 = vec(m)  # m1 points to the same memory address as m
12-element Vector{Int64}:
 2
 3
 4
 3
 4
 5
 4
 5
 6
 5
 6
 7

julia> m2 = reshape(m, 4, 3) # m2 still points to the same memory address as m
4×3 Matrix{Int64}:
 2  4  6
 3  5  5
 4  4  6
 3  5  7

如果你想知道“指向相同的内存地址”是什么意思,看看下面的例子:

代码语言:javascript
复制
julia> m2[1,1] = -66         
-66                          
                             
julia> m                     
3×4 Matrix{Int64}:           
 -66  3  4  5                
   3  4  5  6                
   4  5  6  7                

最后,如果在任何时候您实际上需要一个副本而不是对相同数据的引用,请使用copy(m)或@DNF m[:] (这是一个维度删除运算符,它返回一个Vector,其中包含来自任何Array的数据副本)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65890158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档