Prevent Julia from automatically converting the type of a 1D matrix slice

后端 未结 1 1223
攒了一身酷
攒了一身酷 2021-02-09 13:59
alpha = [1 2 3; 4 5 6]
alpha[:, 1] # Type is Array{Int64, 1}
alpha[:, 1:2] # Type is Array{In64, 2}

I just want to prevent the automatic type conversio

1条回答
  •  野的像风
    2021-02-09 14:12

    Use a range of length 1 instead of just an index

    Instead of simply specifying the index (Int64) of the desired column, specify a range (UnitRange{Int64}) of length 1: 1:1.

    That will trick Julia into preserving the 2D-array type (Array{Int64,2}) instead of returning a vector (Array{Int64,1}).

    Edit: the developers discussed this topic here (thanks to Colin for pointing me to it).

    julia> alpha = [1 2 3; 4 5 6]
    2x3 Array{Int64,2}:
     1  2  3
     4  5  6
    
    julia> alpha[:,1]            # nope
    2-element Array{Int64,1}:
     1
     4    
    
    julia> alpha[:,1:1]          # yep
    2x1 Array{Int64,2}:
     1
     4
    

    0 讨论(0)
提交回复
热议问题