[Numpy-discussion] summing over more than one axis
Joe Harrington
jh@physics.ucf....
Thu Aug 19 10:29:40 CDT 2010
On Thu, 19 Aug 2010 09:06:32 -0500, G?khan Sever <gokhansever@gmail.com> wrote:
>On Thu, Aug 19, 2010 at 9:01 AM, greg whittier <gregwh@gmail.com> wrote:
>
>> I frequently deal with 3D data and would like to sum (or find the
>> mean, etc.) over the last two axes. I.e. sum a[i,j,k] over j and k.
>> I find using .sum() really convenient for 2d arrays but end up
>> reshaping 2d arrays to do this. I know there has to be a more
>> convenient way. Here's what I'm doing
>>
>> a = np.arange(27).reshape(3,3,3)
>>
>> # sum over axis 1 and 2
>> result = a.reshape((a.shape[0], a.shape[1]*a.shape[2])).sum(axis=1)
>>
>> Is there a cleaner way to do this? I'm sure I'm missing something obvious.
>>
>> Thanks,
>> Greg
>>
>
>Using two sums
>
>np.sum(np.sum(a, axis=-2), axis=1)
Be careful. This works for sums, but not for operations like median;
the median of the row medians may not be the global median. So, you
need to do the medians in one step. I'm not aware of a method cleaner
than manually reshaping first. There may also be speed reasons to do
things in one step. But, two steps may look cleaner in code.
--jh--
More information about the NumPy-Discussion
mailing list