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

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