除了分配一个新的向量并用我的矩阵中的一个逐个填充它的值之外,我如何将一个大小为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我感觉这不是最好的方式,但我不能解释为什么……
发布于 2021-01-26 02:20:34
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的数据副本)。
https://stackoverflow.com/questions/65890158
复制相似问题