> Thank you Mauro, CartesianRange(size(A)) seems to be what I am looking for.

That should automatically be done for you by eachindex.  In fact,
eachindex will select the fastest method available for iterating over
all indices.  But if you need extras, as described in that blog post of
Tim, then CartesianRange is the ticket.

> Evan
>
>
> On Thursday, February 11, 2016 at 11:42:11 AM UTC+1, Mauro wrote:
>>
>> It works like so:
>> julia> for i in eachindex(A)
>>           @show A[i]
>>        end
>>
>> ...
>>
>> I.e. the `i` is to be used as sole index into the array.  What `i` is
>> exactly depends on the type of the array.  It's either just a Int or a
>> `CartesianIndex` has a field `I`.  But you should not access `I`
>> directly, that is private to `CartesianIndex`.
>>
>> Have a look at
>> help?> eachindex
>>
>> and if you want to know what else one can do with CartesianIndex:
>> http://www.juliabloggers.com/multidimensional-algorithms-and-iteration/
>>
>> On Thu, 2016-02-11 at 10:56, Evan <[email protected] <javascript:>>
>> wrote:
>> > Hi, I am trying to understand how to use eachindex with an array. For
>> example,
>> > I can do:
>> >
>> > julia> A = zeros(Int, (3,2))
>> > 3x2 Array{Int64,2}:
>> > 0 0
>> > 0 0
>> > 0 0
>> >
>> > followed by:
>> > julia> for iter in eachindex(A)
>> >          @show iter.I[1], iter.I[2]
>> >          @show A[iter]
>> >        end
>> > ERROR: type Int64 has no field I
>> > [inlined code] from show.jl:127
>> > in anonymous at no file:0
>> >
>> >
>> >
>> > However, using:
>> > julia> A = sprand(2, 3, 0.5)
>> > 2x3 sparse matrix with 2 Float64 entries:
>> >     [1, 1] = 0.599423
>> >     [2, 2] = 0.340233
>> >
>> > 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.5994230074532017
>> > (iter.I[1],iter.I[2]) = (2,1)
>> > A[iter] = 0.0
>> > (iter.I[1],iter.I[2]) = (1,2)
>> > A[iter] = 0.0
>> > (iter.I[1],iter.I[2]) = (2,2)
>> > A[iter] = 0.3402329840051479
>> > (iter.I[1],iter.I[2]) = (1,3)
>> > A[iter] = 0.0
>> > (iter.I[1],iter.I[2]) = (2,3)
>> > A[iter] = 0.0
>> >
>> > works just fine. I'm sure it's something simple, but at this stage would
>> > appreciate some help.
>>

Reply via email to