[SciPy-user] apply_along_axis but with multiple arguments

R. Padraic Springuel R.Springuel at umit.maine.edu
Fri Jan 18 14:23:11 EST 2008


I've written my own function that works on an array and am attempting to 
add axis control to that function so that it works similar to mean, sum, 
etc. which already exist in numpy.  Said function, however, has the 
option of weighting each point differently when doing its calculations 
according to an optional weights argument (similar to average).  Thus, 
in adding axis control to the function, I have to pull sub-arrays from 
two arrays simultaneously (the data and weights), and do so in such a 
way that they correspond to each other appropriately.  I've thought 
about using apply_along_axis to do this, but it seems that the function 
doesn't allow the simultaneous variation of two arrays, only the 
variation of one.  Can anyone shed some light on how I might do this?

Since I'm not sure the above is totally clear, let me try putting it 
this way too:
Let's assume for the moment that the average function in numpy didn't 
have axis control built into it.  If I wanted to take the weighted 
average of an array along a certain axis could I use apply_along_axis in 
such a way that both a (the data) and weights are varied simultaneously 
along that axis?  I.e. I'm looking for a way to use apply_along_axis to 
duplicate average(a,axis,weights) using average(a,weights) in the same 
way that
apply_along_axis(average,axis,a) duplicates average(a,axis).  Would 
apply_over_axes or vectorize be more appropriate, and if so how?
-- 

R. Padraic Springuel
Teaching Assistant
Department of Physics and Astronomy
University of Maine
Bennett 309
Office Hours: By appointment only



More information about the SciPy-User mailing list