eachindex
eachindex(A...)
Creates an iterable object for visiting each index of an AbstractArray A
in an efficient manner. For array types that have opted into fast linear indexing (like Array
), this is simply the range 1:length(A)
. For other array types, this returns a specialized Cartesian range to efficiently index into the array with indices specified for every dimension. For other iterables, including strings and dictionaries, this returns an iterator object supporting arbitrary index types (e.g. unevenly spaced or non-integer indices).
Example for a sparse 2-d array:
julia> A = sprand(2, 3, 0.5)
2x3 sparse matrix with 4 Float64 entries:
[1, 1] = 0.598888
[1, 2] = 0.0230247
[1, 3] = 0.486499
[2, 3] = 0.809041
julia> for iter in eachindex(A)
@show iter.I_1, iter.I_2
@show A[iter]
end
(iter.I_1,iter.I_2) = (1,1)
A[iter] = 0.5988881393454597
(iter.I_1,iter.I_2) = (2,1)
A[iter] = 0.0
(iter.I_1,iter.I_2) = (1,2)
A[iter] = 0.02302469881746183
(iter.I_1,iter.I_2) = (2,2)
A[iter] = 0.0
(iter.I_1,iter.I_2) = (1,3)
A[iter] = 0.4864987874354343
(iter.I_1,iter.I_2) = (2,3)
A[iter] = 0.8090413606455655
If you supply more than one AbstractArray
argument, eachindex
will create an iterable object that is fast for all arguments (a
UnitRange
if all inputs have fast linear indexing, a
CartesianRange otherwise). If the arrays have different sizes and/or
dimensionalities, eachindex
returns an iterable that spans the
largest range along each dimension.
Examples
A = sprand(2, 3, 0.5)
for iter in eachindex(A)
@show iter.I_1, iter.I_2
@show A[iter]
end
This example demonstrates the usage of eachindex
function with a sparse 2-dimensional array A
. It iterates over each index of A
efficiently.
Output:
(iter.I_1, iter.I_2) = (1, 1)
A[iter] = 0.5988881393454597
(iter.I_1, iter.I_2) = (2, 1)
A[iter] = 0.0
(iter.I_1, iter.I_2) = (1, 2)
A[iter] = 0.02302469881746183
(iter.I_1, iter.I_2) = (2, 2)
A[iter] = 0.0
(iter.I_1, iter.I_2) = (1, 3)
A[iter] = 0.4864987874354343
(iter.I_1, iter.I_2) = (2, 3)
A[iter] = 0.8090413606455655
In this example, eachindex
provides an iterable object that allows efficient access to each index of the sparse matrix A
along with its corresponding value. The iteration is performed with the for
loop, and iter.I_1
and iter.I_2
represent the indices of the current element. A[iter]
retrieves the value at the current index.
See Also
countfrom, cycle, done, drop, eachindex, enumerate, first, repeated, rest, start, svds, take, vecdot, vecnorm, zip,User Contributed Notes
Add a Note
The format of note supported is markdown, use triple backtick to start and end a code block.