# [Numpy-discussion] Geometrically defined masking arrays; how to optimize?

Chris Barker chris.barker at noaa.gov
Wed Feb 12 14:04:08 EST 2014

```An extra note here:

One of the great things about numpy (as opposed, to say, MATLAB), is
array broadcasting  Thus you generally don't need meshgrid -- why carry all
that extra repetitive data around. So here's a version that uses

# Center at 0, 0

x = np.linspace(-5,5,11)

# y is re-shaped to be a column vector...
y = np.linspace(-8,8,17).reshape((-1,1))

# when you add x and y you get the 2-d array for the results...

out_circle = (x * x + y * y < radius**2)

print out_circle

On Wed, Feb 12, 2014 at 2:43 AM, Wolfgang Draxinger <
Wolfgang.Draxinger at physik.uni-muenchen.de> wrote:

> On Tue, 11 Feb 2014 22:16:46 +0100
> Daπid <davidmenhur at gmail.com> wrote:
>
> > Here it is an example:
> >
> > import numpy as np
> > import pylab as plt
> >
> > N = 100
> > M = 200
> > x, y = np.meshgrid(np.arange(N), np.arange(M))
> >
> > # Center at 40, 70, radius 20
> > x -= 40
> > y -= 70
> > out_circle = (x * x + y * y < 20**2)
>
> Neat.
>
> > Note that I have avoided taking the costly square root of each
> > element by just taking the square of the radius. It can also be
> > generalised to ellipses or rectangles, if you need it.
>
> Oops, why did I take the "long" tour anyway?
>
> > Also, don't use 0 as a False value, and don't force it to be a 0.
> > Instead, use "if not ring:"
>
> 'ring' is not a boolean, but a numeric index and the test is if the
> index is nonzero. I could have also written 'if ring > 0:' and swapped
> the clauses. Yes I know that for a value 0 zero it will test as not,
> but in this case I wanted to have it written down, that this tests for
> a certain numerical value.
>
>
> Thanks,
>
> Wolfgang
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>

--

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140212/f71cd343/attachment.html>
```