用法:
CartesianIndices(sz::Dims) -> R
CartesianIndices((istart:[istep:]istop, jstart:[jstep:]jstop, ...)) -> R定義一個跨越整數索引的多維矩形範圍的區域R。這些在迭代上下文中最常見,其中 for I in R ... end 將返回與嵌套循環等效的   索引 CartesianIndex I
for j = jstart:jstep:jstop
    for i = istart:istep:istop
        ...
    end
end因此,這些對於編寫在任意維度上工作的算法很有用。
CartesianIndices(A::AbstractArray) -> R為方便起見,從數組構造 CartesianIndices 會生成其索引範圍。
Julia 1.6
步距法CartesianIndices((istart:istep:istop, jstart:[jstep:]jstop, ...))至少需要 Julia 1.6。
例子
julia> foreach(println, CartesianIndices((2, 2, 2)))
CartesianIndex(1, 1, 1)
CartesianIndex(2, 1, 1)
CartesianIndex(1, 2, 1)
CartesianIndex(2, 2, 1)
CartesianIndex(1, 1, 2)
CartesianIndex(2, 1, 2)
CartesianIndex(1, 2, 2)
CartesianIndex(2, 2, 2)
julia> CartesianIndices(fill(1, (2,3)))
2×3 CartesianIndices{2, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}}:
 CartesianIndex(1, 1)  CartesianIndex(1, 2)  CartesianIndex(1, 3)
 CartesianIndex(2, 1)  CartesianIndex(2, 2)  CartesianIndex(2, 3)線性和笛卡爾指數之間的轉換
線性索引到笛卡爾索引的轉換利用了 CartesianIndices 是 AbstractArray 並且可以線性索引的事實:
julia> cartesian = CartesianIndices((1:3, 1:2))
3×2 CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}:
 CartesianIndex(1, 1)  CartesianIndex(1, 2)
 CartesianIndex(2, 1)  CartesianIndex(2, 2)
 CartesianIndex(3, 1)  CartesianIndex(3, 2)
julia> cartesian[4]
CartesianIndex(1, 2)
julia> cartesian = CartesianIndices((1:2:5, 1:2))
3×2 CartesianIndices{2, Tuple{StepRange{Int64, Int64}, UnitRange{Int64}}}:
 CartesianIndex(1, 1)  CartesianIndex(1, 2)
 CartesianIndex(3, 1)  CartesianIndex(3, 2)
 CartesianIndex(5, 1)  CartesianIndex(5, 2)
julia> cartesian[2, 2]
CartesianIndex(3, 2)廣播
CartesianIndices 使用 CartesianIndex 支持廣播算術(+ 和 -)。
Julia 1.1
CartesianIndices 的廣播至少需要 Julia 1.1。
julia> CIs = CartesianIndices((2:3, 5:6))
2×2 CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}:
 CartesianIndex(2, 5)  CartesianIndex(2, 6)
 CartesianIndex(3, 5)  CartesianIndex(3, 6)
julia> CI = CartesianIndex(3, 4)
CartesianIndex(3, 4)
julia> CIs .+ CI
2×2 CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}:
 CartesianIndex(5, 9)  CartesianIndex(5, 10)
 CartesianIndex(6, 9)  CartesianIndex(6, 10)對於笛卡爾到線性索引的轉換,請參閱 。LinearIndices 
相關用法
- Julia IteratorsMD.CartesianIndex用法及代碼示例
- Julia Iterators.partition用法及代碼示例
- Julia Iterators.rest用法及代碼示例
- Julia Iterators.enumerate用法及代碼示例
- Julia Iterators.zip用法及代碼示例
- Julia Iterators.filter用法及代碼示例
- Julia Iterators.drop用法及代碼示例
- Julia Iterators.countfrom用法及代碼示例
- Julia Iterators.Stateful用法及代碼示例
- Julia Iterators.product用法及代碼示例
- Julia Iterators.accumulate用法及代碼示例
- Julia Iterators.map用法及代碼示例
- Julia Iterators.dropwhile用法及代碼示例
- Julia Iterators.peel用法及代碼示例
- Julia Iterators.reverse用法及代碼示例
- Julia Iterators.repeated用法及代碼示例
- Julia Iterators.takewhile用法及代碼示例
- Julia Iterators.cycle用法及代碼示例
- Julia Iterators.take用法及代碼示例
- Julia Iterators.flatten用法及代碼示例
- Julia InteractiveUtils.supertypes用法及代碼示例
- Julia IdDict用法及代碼示例
- Julia InteractiveUtils.subtypes用法及代碼示例
- Julia Inf用法及代碼示例
- Julia IOBuffer用法及代碼示例
注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Base.IteratorsMD.CartesianIndices — Type。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
