代码之家  ›  专栏  ›  技术社区  ›  Zach

将数组{int,1}转换为数组{int,2}

  •  0
  • Zach  · 技术社区  · 6 年前

    我使用的函数将数组{int,2}作为参数,但当数组只包含1个整数时(在这种情况下,数组类型是array{int,1})将不起作用。

    我知道如何创建一个包含2个或更多整数的数组{int,2}:

    S2 = [1 2] # S2 is an Array{Int, 2}
    S3 = [1 2 3] # S3 is an Array{Int, 2}
    

    但我不知道如何创建只有1个整数的数组{int,2}:

    S1 = [1] # S1 is an Array{Int, 1}
    

    有可能吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Bogumił Kamiński    6 年前

    使用 hcat 功能,例如:

    julia> hcat(1)
    1×1 Array{Int64,2}:
     1
    

    如果要将矢量转换为矩阵,也可以这样做:

    julia> x = [1]
    1-element Array{Int64,1}:
     1
    
    julia> hcat(x)
    1×1 Array{Int64,2}:
     1
    

    编辑:事后你也可以这样做:

    julia> fill(10,1,1)
    1×1 Array{Int64,2}:
     10
    

    它更复杂,但这样你可以简单地创建一个更高维度的对象,例如:

    julia> fill(10,1,1,1)
    1×1×1 Array{Int64,3}:
    [:, :, 1] =
     10
    

    编辑2:提出一个新的长度维度的通解 1 对任何地方的任何数组都将使用理解:

    julia> x = [1 2
                3 4]
    2×2 Array{Int64,2}:
     1  2
     3  4
    
    julia> [x[i,k] for i in 1:size(x,1), j in 1:1, k in 1:size(x,2)]
    2×1×2 Array{Int64,3}:
    [:, :, 1] =
     1
     3
    
    [:, :, 2] =
     2
     4
    
        2
  •  3
  •   Picaud Vincent    6 年前

    另一种可能是 reshape

    julia> S1 = [1]
    1-element Array{Int64,1}:
     1
    
    julia> reshape(S1,1,1)
    1×1 Array{Int64,2}:
     1