2015-03-20 18 views
10

ı p adlı bir Array değişken var diyelim? p ayrıca 2 boyutlu olabilir:Tekil Array öğesini skaler haline nasıl dönüştürmeliyim? Bunun skaler nasıl</p> <pre><code>julia> p = [5] julia> typeof(p) Array{Int64,1} </code></pre> <p>dönüştürmek olmalıdır:

julia> p = [1]'' 
julia> typeof(p) 
Array{Int64,2} 

(Not: Çift devrik hile dimentionality might not work in future versions of Julia artırmak için) herhangi bir boyutun p yapabilir, uygun manipülasyon yoluyla

ama bunu nasıl azaltacaktır bir skalar mı?


bir güvenilir yaklaşım p=p[1] olmakla pp birden fazla eleman varsa herhangi bir hata atmaz; bu bana göre değil. Ben (kontrol ile)

function scalar(x) 
    assert(length(x) == 1) 
    x[1] 
end 

kendi işlevi inşa edebileceğini ancak tekerleği yeniden gerekir gibi görünüyor.

Çalışmayan, p sıfır boyutlu bir dizi olana kadar yalnızca boyutlarını soran squeeze.

(. Bu durumda, işletme-agnostik içinde, Julia: convert 1x1 array from inner product to number İlişkin ama)

cevap

7

Eğer dizi yanlış şekil, yapabilirsin reshape ise skaler olsun ama bir hata atmak isterseniz:

julia> p1 = [4]; p2 = [5]''; p0 = []; p3 = [6,7]; 

julia> reshape(p1, 1)[1] 
4 

julia> reshape(p2, 1)[1] 
5 

julia> reshape(p0, 1)[1] 
ERROR: DimensionMismatch("new dimensions (1,) must be consistent with array size 0") 
in reshape at array.jl:122 
in reshape at abstractarray.jl:183 

julia> reshape(p3, 1)[1] 
ERROR: DimensionMismatch("new dimensions (1,) must be consistent with array size 2") 
in reshape at array.jl:122 
in reshape at abstractarray.jl:183 
İlgili konular