Julia 0.5 ora supporta l'indicizzazione da matrici di CartesianIndex
es. Un CartesianIndex
è un particolare tipo di indice che si estende su più dimensioni:
julia> genconv = reshape([6,9,7,1,4,2,3,2,0,9,10,8,7,8,5], 5, 3)
5×3 Array{Int64,2}:
6 2 10
9 3 8
7 2 7
1 0 8
4 9 5
julia> genconv[CartesianIndex(2,3)] # == genconv[2,3]
8
La cosa interessante è che è possibile utilizzare vettori di CartesianIndex
es specificare questo NumPy stile puntuale indicizzazione:
julia> genconv[[CartesianIndex(1,2),CartesianIndex(2,3),CartesianIndex(3,1)]]
3-element Array{Int64,1}:
2
8
7
che è piuttosto prolisso e terribile, ma questo può essere combinato con la nuova sintassi di trasmissione speciale f.()
per una soluzione molto bella:
julia> genconv[CartesianIndex.([1,2,3],[2,3,1])]
3-element Array{Int64,1}:
2
8
7
no mi piace? '[genconv [[1,2,3], [2,3,1]] ...]' –
No, perché mi aspetto un vettore con tre elementi. –