Hello Damien, broadcasting can solve your problem (see http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html):
(A[np.newaxis,:]**B[:,np.newaxis]).sum(axis=0) gives the result you want. (assuming "import numpy as np", which is considered as a better practice as "from numpy import *") Cheers, Emmanuelle On Wed, Nov 18, 2009 at 03:43:09PM -0500, Damien Moore wrote: > ugh... I goofed. The code snippet should have read > from numpy import * > A=array([[1,2],[2,3],[3,4]]) > B=array([[2,2],[3,3]]) > C=zeros(A.shape) > for i in xrange(len(A)): > C[i]=(A[i]**B).sum(0) > print C > On Wed, Nov 18, 2009 at 2:17 PM, Damien Moore <[email protected]> wrote: > > The title of this e-mail is probably misleading so let me just show some > > code: > > from numpy import * > > A=array([[1,2],[2,3],[3,4]]) > > B=array([[2,2],[3,3]]) > > C=zeros(A.shape) > > for i in xrange(len(A)): > > C[i]=sum(A[i]**B) > > print C > > What I want to do is eliminate the for loop and rely on numpy > > internals, but I'm not sure how to do this most efficiently. > > The fundamental aspect of the operation is that the array C is > > constructed by applying each subarray B to each subarray of A (i.e. > > all permutations) and then summing over a subset. > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
