[Numpy-discussion] product of arrays of different lengths
Mon Sep 15 06:01:29 CDT 2008
nice, much neater, thanks
On Sep 15, 11:25 am, Francesc Alted <fal...@pytables.org> wrote:
> A Monday 15 September 2008, SimonPalmer escrigué:
> > I have two 1D arrays of different lengths and I want the calculate
> > sum of the product of the two to the extent of the smaller of them
> > (make sense?). I don't know which of the two will be the longer
> > ahead of time.
> > I expected (hoped) to be able to do this:
> > sp = (A * B).sum()
> > and imagined that the trailing end of the longer of the two arrays
> > might just be ignored, but instead I get an error "objects cannot be
> > broadcast to a single shape".
> > Both arrays are generally very short (<100 elements) so I can
> > tolerate a copy, however this calculation is right in the heart of
> > the innermost loop in my code, so I have to tread a bit carefully.
> > Here's what I do at the moment, which is ugly, but works
> > max_idx = min(len(A), len(B))
> > total_product = 0
> > for idx in range(0, max_idx):
> > total_product += A[idx] * B[idx]
> > ...but this is numpy, so I'm looking for a neat way.
> If I understand you correctly, maybe the next is what you want:
> max_idx = min(len(A), len(B))
> (A[:max_idx] * B[:max_idx]).sum()
> which does not require a copy becuase the [:max_idx] operator returns
> just a view of the arrays.
> Hope that helps,
> Francesc Alted
> Numpy-discussion mailing list
More information about the Numpy-discussion