
help, i need help formatting some data in Numeric arrays. i can't quite seem to make it happen. here they come... (beware) 1: i want to create a simple 3d array, so that accessing it with any two indices gives me the same result as those two indices.. myarray[1,2] == 1,2 myarray[4,4] == 4,4 i would assume this just involves mixing two arange()'s together, but i can't seem to get them meshed together correctly. actually, this is something i think i'd want quite a bit, it'd be real real nice if arange could take multiple axes. :] i thought this might be a good "fromfunction" situation, but i couldn't get that to go either. 2: i have a 3d array with image data (RGBs). i want to flatten only the first two dimensions so i have an array of RGB values. this one's got me completely stumped. i'm hoping there's just some function i'm not seeing in the docs, but i'd be just as happy with a bit of Numeric magic. thanks, please, and all that good stuff!

Since nobody else has replied to this yet, I'll take a crack at it. On Thu, 2 May 2002, Pete Shinners wrote:
help, i need help formatting some data in Numeric arrays. i can't quite seem to make it happen. here they come... (beware)
1: i want to create a simple 3d array, so that accessing it with any two indices gives me the same result as those two indices.. myarray[1,2] == 1,2 myarray[4,4] == 4,4 i would assume this just involves mixing two arange()'s together, but i can't seem to get them meshed together correctly. actually, this is something i think i'd want quite a bit, it'd be real real nice if arange could take multiple axes. :] i thought this might be a good "fromfunction" situation, but i couldn't get that to go either.
This works. I don't know whether it is optimal, though I think it isn't bad. Note that the returned values are 2-element Numeric arrays, not tuples. Seems to me that arrays are a lot more usable as return values. def twod(n,m): a = zeros((n,m,2)) b = arange(n*m) a[:,:,0] = transpose(reshape(b % n, (m,n))) a[:,:,1] = reshape(b % m, (n,m)) return a
2: i have a 3d array with image data (RGBs). i want to flatten only the first two dimensions so i have an array of RGB values. this one's got me completely stumped. i'm hoping there's just some function i'm not seeing in the docs, but i'd be just as happy with a bit of Numeric magic.
It's not clear to me what you mean here. If you have an array with shape (n,m,3) and want to get (n*m,3), just use reshape(a,(n*m,3)). Maybe you mean something more complicated than that? Rick ------------------------------------------------------------------ Richard L. White rlw@stsci.edu http://sundog.stsci.edu/rick/ Space Telescope Science Institute Baltimore, MD

def twod(n,m): a = zeros((n,m,2)) b = arange(n*m) a[:,:,0] = transpose(reshape(b % n, (m,n))) a[:,:,1] = reshape(b % m, (n,m)) return a
eric has sent me a great version off the list: def other_twod(n,m): q = indices((n, m) return transpose(q)[:,:,::-1]
It's not clear to me what you mean here. If you have an array with shape (n,m,3) and want to get (n*m,3), just use reshape(a,(n*m,3)). Maybe you mean something more complicated than that?
no, this is exactly what i meant. in hindsight i realize i already knew how to do this. owell, and thanks for the answers :]
participants (2)
-
Pete Shinners
-
Rick White