[Numpy-discussion] combinatorial operations on a pair of arrays
Emmanuelle Gouillart
emmanuelle.gouillart at normalesup.org
Wed Nov 18 15:49:07 EST 2009
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 <damienlmoore at gmail.com> 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
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
More information about the NumPy-Discussion
mailing list