wsshin
                
              
                
              
                  
                  
              1
              
             
            
              I would like to convert a 1×n array to an n-vector, e.g., [1 2 3] to [1,2,3].  What is the best way to do so?
My current method is first to convert it to a tuple and then to a vector:
julia> VERSION
v"0.7.0"
julia> w = [1 2 3]
1×3 Array{Int64,2}:
 1  2  3
julia> [(w...,)...]
3-element Array{Int64,1}:
 1
 2
 3
julia> @btime [($w...,)...]
  372.714 ns (2 allocations: 144 bytes)
3-element Array{Int64,1}:
 1
 2
 3
- Is there a more efficient way in terms of the number of allocations?
- Is there a more compact way syntactically?
 
            
              
              
              
            
            
           
          
            
              
                BLI
                
              
              
                  
                  
              3
              
             
            
              julia> w = rand(1,10000000)
1×10000000 Array{Float64,2}:
 0.333815  0.882382  0.280182  0.85099  0.0466032  0.958258  …  0.486106  0.573983  0.494289  0.0294783  0.567801
julia> @time [(w...)...];
  1.661465 seconds (20.00 M allocations: 539.015 MiB, 53.93% gc time)
julia> @time vec(w);
  0.000003 seconds (6 allocations: 240 bytes)
             
            
              
              
              2 Likes
            
            
           
          
            
            
              Use vec, but be aware that the array and vector share the same memory:
julia> w = [1 2 3]
1×3 Array{Int64,2}:
 1  2  3
julia> v = vec(w)
3-element Array{Int64,1}:
 1
 2
 3
julia> v[1] = 42
42
julia> w
1×3 Array{Int64,2}:
 42  2  3
If you instead want a copy of the data, use copy(vec(w)).
             
            
              
              
              3 Likes
            
            
           
          
            
              
                DNF
                
              
              
                  
                  
              5
              
             
            
              
In that case, I think w[:] would be convenient.
             
            
              
              
              3 Likes
            
            
           
          
            
            
              In fact in that case one would get automatically a one-dimensional array (vector).