用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。