Julia CartesianIndex в целочисленное преобразование LinearIndex - PullRequest
1 голос
/ 05 августа 2020

Чтобы преобразовать CartesianIndex, например CartesianIndex(1,2) в LinearIndex, я могу использовать функцию LinearIndeces :

julia> a = rand(2,2)
2×2 Array{Float64,2}:
 0.57097   0.0647051
 0.767868  0.531104

julia> I = LinearIndices(a)
2×2 LinearIndices{2,Tuple{Base.OneTo{Int64},Base.OneTo{Int64}}}:
 1  3
 2  4

julia> I[CartesianIndex(1,2)]
3

Однако как получить целое число LinearIndex 3 для CartesianIndex(1,2) без построения экземпляра массива a? Предполагая, что я знаю диапазоны для CartesianIndex, 1:2, 1:2.

1 Ответ

3 голосов
/ 05 августа 2020

Просто используйте LinearIndices с кортежем осей (или даже просто кортежем размеров):

julia> LinearIndices((1:2,1:2))
2×2 LinearIndices{2,Tuple{UnitRange{Int64},UnitRange{Int64}}}:
 1  3
 2  4

julia> LinearIndices((1:2,1:2))[1,2]
3
...