如何将向量作为一行附加到Julia矩阵?

bec*_*cko 7 multidimensional-array julia

我最初有一个空矩阵:

m = Matrix(0, 3)
Run Code Online (Sandbox Code Playgroud)

和我要添加的行:

v = [2,3]
Run Code Online (Sandbox Code Playgroud)

我试着这样做:

[m v]
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误

 ERROR: ArgumentError: number of rows of each array must match
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

Rob*_*Rob 8

那是因为你的矩阵大小不匹配.特别是v不包含足以匹配m的列.它的转换

所以这不起作用

m = Matrix(0, 3)
v = [2,3]
m = cat(1, m, v)  # or a = [m; v]
>> ERROR: DimensionMismatch("mismatch in dimension 2 (expected 3 got 1)")
Run Code Online (Sandbox Code Playgroud)

这样做

m = Matrix(0, 3)
v = [2 3 4]
m = cat(1, m, v)  # or m = [m; v]
>> 1x3 Array{Any,2}:
>>   2  3  4
Run Code Online (Sandbox Code Playgroud)

如果再次运行它会创建另一行

m = cat(1, m, v)  # or m = [m; v]
>> 2x3 Array{Any,2}:
>>   2  3  4
>>   2  3  4
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您想保持`v = [2,3,4]`格式,则可以使用`m = [m; v']`。 (2认同)

Sal*_*apa 6

使用vcat(垂直连接)功能:

help?> vcat
search: vcat hvcat VecOrMat DenseVecOrMat StridedVecOrMat AbstractVecOrMat levicivita is_valid_char @vectorize_2arg

  vcat(A...)

  Concatenate along dimension 1
Run Code Online (Sandbox Code Playgroud)

注意您必须转置向量v,即。v',否则会出现DimensionMismatch错误:

julia> v = zeros(3)
3-element Array{Float64,1}:
 0.0
 0.0
 0.0

julia> m = ones(3, 3)
3x3 Array{Float64,2}:
 1.0  1.0  1.0
 1.0  1.0  1.0
 1.0  1.0  1.0

julia> vcat(m, v')    # '
4x3 Array{Float64,2}:
 1.0  1.0  1.0
 1.0  1.0  1.0
 1.0  1.0  1.0
 0.0  0.0  0.0

julia> v'    # '
1x3 Array{Float64,2}:
 0.0  0.0  0.0

julia> vcat(m, v)
ERROR: DimensionMismatch("mismatch in dimension 2 (expected 3 got 1)")
 in cat_t at abstractarray.jl:850
 in vcat at abstractarray.jl:887
Run Code Online (Sandbox Code Playgroud)

注意:评论;# '只是为了使语法高亮工作正常。