Qualcuno potrebbe spiegare in termini semplici la differenza tra la funzione v0.4 di Julia:lingua Julia: sub vs funzione fetta
sub e slice (e forse slicedim)
Qualche semplice esempio potrebbe essere notevolmente appriciated. Grazie mille
Qualcuno potrebbe spiegare in termini semplici la differenza tra la funzione v0.4 di Julia:lingua Julia: sub vs funzione fetta
sub e slice (e forse slicedim)
Qualche semplice esempio potrebbe essere notevolmente appriciated. Grazie mille
La differenza è che slice
elimina tutte le dimensioni "affettate" con uno scalare (non vettoriale), mentre le dimensioni sub
spesso le conservano. Ad esempio:
julia> A = rand(3,3)
3x3 Array{Float64,2}:
0.403464 0.229403 0.924686
0.953741 0.175086 0.49139
0.0290678 0.705564 0.567355
julia> a = slice(A, 2, :) # this will be 1-dimensional
3-element SubArray{Float64,1,Array{Float64,2},(Int64,Colon),2}:
0.953741
0.175086
0.49139
julia> b = sub(A, 2, :) # this will be 2-dimensional
1x3 SubArray{Float64,2,Array{Float64,2},(UnitRange{Int64},Colon),2}:
0.953741 0.175086 0.49139
julia> size(a)
(3,)
julia> size(b)
(1,3)
C'è una sola eccezione: sub
gocce dimensioni indicizzati con uno scalare se vengono "finale" dimensioni, ovvero non sono dimensioni successive indicizzati con un vettore:
julia> a = slice(A, :, 2)
3-element SubArray{Float64,1,Array{Float64,2},(Colon,Int64),2}:
0.229403
0.175086
0.705564
julia> b = sub(A, :, 2)
3-element SubArray{Float64,1,Array{Float64,2},(Colon,Int64),2}:
0.229403
0.175086
0.705564
julia> size(a)
(3,)
julia> size(b)
(3,)
Se si slice
con una gamma, quindi si ottiene un comportamento come sub
:
julia> a = slice(A, 2:2, :)
1x3 SubArray{Float64,2,Array{Float64,2},(UnitRange{Int64},Colon),1}:
0.953741 0.175086 0.49139
julia> size(a)
(1,3)
Non è la lunghezza dell'indice che conta, è il tipo: qualsiasi dimensione indicizzata con un non scalare verrà mantenuta.
** Se si divide con un intervallo, si ottiene un comportamento come sub **. Ci sono funzionalità aggiuntive con 'sub' che non possono essere fatte con' slice'. Oppure potrebbe 'slice' sostituire' sub' in ogni circostanza. – user3426681