[Numpy-discussion] calculating weighted majority using two 3D arrays
Gregory, Matthew
matt.gregory at oregonstate.edu
Thu Mar 6 00:45:57 EST 2008
Hi list,
I'm a definite newbie to numpy, but finding the library to be incredibly
useful.
I'm trying to calculate a weighted majority using numpy functions. I
have two sets of image stacks (one is values, the other weights) that I
read into 3D numpy arrays. Assuming I read in a 100 row x 100 col image
subset consisting of ten images each, I have two arrays called values
and weights with the following shape:
values.shape = (10, 100, 100)
weights.shape = (10, 100, 100)
At this point I need to call my user-defined function to calculate the
weighted majority which should return a value for each 'pixel' in my 100
x 100 subset. The way I'm doing it now (which I assume is NOT optimal)
is to pass values[:,i,j] and weights[:,i,j] to my function in a double
loop for i rows and j columns. I then build up the return values into a
subsequent 2D array.
It seems like I should be able to use vectorize() or apply_along_axis()
to do this, but I'm not clever enough to figure this out.
Alternatively, should I be structuring my initial data differently so
that it's easier to use one of these functions. The only way I can
think about doing that would be to store the two 10-item arrays into a
tuple and then make an array of these tuples, but that seemed overly
complicated. Or potentially, is there a way to calculate a weighted
majority just using standard numpy functions??
Thanks for any suggestions,
matt
More information about the NumPy-Discussion
mailing list