Thanks for the explanation!! That's exactly what I need at the moment, 
though I clearly know that unpredictable return type could be dangerous. 
Many thanks.

On Sunday, May 15, 2016 at 9:07:12 PM UTC+1, Kristoffer Carlsson wrote:
>
> It is possible but seems like something undesirable because you then don't 
> know if an Array{T,1} or Array{T,2} will be returned by the function. This 
> is something Julia people like to call "type instability" when the type of 
> your returned variables depend not only on the type of the arguments to the 
> function. 
>
> If you really want this, then this is an example:
>
> function maybevec(A::AbstractMatrix)
>     if size(A, 2) == 1 || size(A, 1) == 1
>         return vec(A)
>     else
>         return A
>     end 
> end
>
>
> julia> maybevec(rand(5,5))
> 5×5 Array{Float64,2}:
>  0.542099  0.901245  0.267711  0.260192  0.395683
>  0.361152  0.373492  0.231736  0.259319  0.933759
>  0.307834  0.460153  0.157018  0.712722  0.194619
>  0.869251  0.947844  0.5374    0.715395  0.67132 
>  0.928848  0.642071  0.948639  0.693701  0.562648
>
>
> julia> maybevec(rand(5,1))
> 5-element Array{Float64,1}:
>  0.579539
>  0.012443
>  0.307975
>  0.742628
>  0.997113
>
>
>
> On Sunday, May 15, 2016 at 9:17:27 PM UTC+2, [email protected] wrote:
>>
>> Thanks for the pointer for reshape. 
>>
>> Sorry that I failed to make my question clear enough. In fact, I wonder 
>> if there is a function which can _automatically_ recast a single-column 
>> Array{T,2} to an Array{T,1} and do nothing if this Array{T,2} has multiple 
>> rows.
>>
>>
>>
>>
>>
>> On Sunday, May 15, 2016 at 6:41:51 PM UTC+1, Tim Holy wrote:
>>>
>>> See reshape and vec. 
>>>
>>> Best, 
>>> --Tim 
>>>
>>> On Sunday, May 15, 2016 09:00:33 AM [email protected] wrote: 
>>> > Here is rookie question, which I have tried to find a similar question 
>>> and 
>>> > answer in the history of this group, but failed. Please bear me. 
>>> > 
>>> > Since Julia distinguishes between Array{Float64,1} and 
>>> Array{Float64,2}, 
>>> > even there is only one column in an Array{Float64,2}. Therefore, the 
>>> type 
>>> > of rand(5) and rand(5,1) are not same. 
>>> > 
>>> > julia> x = rand(5) 
>>> > 5-element Array{Float64,1}: 
>>> >  0.183247 
>>> >  0.480208 
>>> >  0.623144 
>>> >  0.342792 
>>> >  0.0400695 
>>> > 
>>> > julia> y = rand(5, 1) 
>>> > 5x1 Array{Float64,2}: 
>>> >  0.553224 
>>> >  0.0061835 
>>> >  0.762059 
>>> >  0.643796 
>>> >  0.655135 
>>> > 
>>> > 
>>> > Is there any way that I can upgrade x about to become an 
>>> Array{Float64,2}? 
>>> > And is there a way to downgrade y to become an Array{Float64,1}, when 
>>> it 
>>> > has only one column? 
>>> > 
>>> > In case that there is a similar discussion before, a link to the 
>>> previous 
>>> > thread is good enough and appreciated! 
>>> > 
>>> > Thanks! 
>>>
>>>

Reply via email to