gpt4 book ai didi

arrays - Julia - 将矩阵转换为向量

转载 作者:行者123 更新时间:2023-12-05 02:02:18 31 4
gpt4 key购买 nike

除了分配一个新向量并用我的矩阵一个一个地填充它的值外,我如何将大小为 n x m 的矩阵调整大小/重新填充为大小为 n x m 的向量 概括以下示例:

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

我的一个想法是:

 res_vect = Int[]
for j in 1:size(example_matrix,2)
res_vect = vcat(res_vect, example_matrix[:,j])
end

我感觉这不是最佳方式,但我无法解释原因...

最佳答案

Julia 允许您在不复制任何数据的情况下执行此类操作:

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

如果您想知道“指向同一内存地址”是什么意思,请看一下这个例子:

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 的数据副本)。

关于arrays - Julia - 将矩阵转换为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65890158/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com