【问题标题】:Convert Array{Int, 1} into Array{Int, 2}将 Array{Int, 1} 转换为 Array{Int, 2}
【发布时间】:2018-06-19 11:56:51
【问题描述】:

我使用一个以 Array{Int, 2} 作为参数的函数,但当数组仅包含 1 个整数时它不起作用(因为在这种情况下数组类型为 Array{Int, 1})。

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

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

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

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

有可能吗?

【问题讨论】:

标签: arrays type-conversion julia


【解决方案1】:

另一种可能是使用reshape

julia> S1 = [1]
1-element Array{Int64,1}:
 1

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

【讨论】:

    【解决方案2】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2019-01-01
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多