# How to filter data with masks and update with new values

**URL:** <https://discourse.julialang.org/t/how-to-filter-data-with-masks-and-update-with-new-values/67387>\
**Category:** New to Julia\
**Tags:** question\
**Created:** [August 31, 2021, 12:04am UTC](https://discourse.julialang.org/t/how-to-filter-data-with-masks-and-update-with-new-values/67387 "2021-08-31T00:04:40Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![hdcpereira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hdcpereira/32/28705_2.png) [@hdcpereira](https://discourse.julialang.org/u/hdcpereira)\
**Post date:** [August 31, 2021, 12:04am UTC](https://discourse.julialang.org/t/how-to-filter-data-with-masks-and-update-with-new-values/67387/1 "2021-08-31T00:04:40Z")

</div>

Hello there.

I’m trying to rewrite a function that I wrote in Python but I have no idea how to do it.

My Python function is:

```julia
def R( A1, A2 ):
  phi = np.linspace(0,np.pi,1000)
  Rec = ( 4*A1*A2 / (A1 + A2)**2 ) * np.cos(phi)**2
  Rec[np.logical_and(phi>np.pi/2,phi<3*np.pi/2)] = 0.0
  return phi, Rec

```

in Julia i got to:

```julia
function R(A1, A2)
    phi = LinRange( 0, pi, 1000)
    Rec = (4*A1*A2 / (A1+A2)^2) * cos.(phi).^2
    # Filter Rec and update values where phi > (pi/2) and phi < 3*(pi/2) with 0 
    return phi, Rec
end 

```

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 31, 2021, 12:10am UTC](https://discourse.julialang.org/t/how-to-filter-data-with-masks-and-update-with-new-values/67387/2 "2021-08-31T00:10:26Z")

</div>

```julia
@. Rec[pi/2 < phi < 3*pi/2] = 0.0

```

---

<div class="post-metadata">

**Author:** ![hdcpereira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hdcpereira/32/28705_2.png) [@hdcpereira](https://discourse.julialang.org/u/hdcpereira)\
**Post date:** [August 31, 2021, 12:12am UTC](https://discourse.julialang.org/t/how-to-filter-data-with-masks-and-update-with-new-values/67387/3 "2021-08-31T00:12:01Z")

</div>

what does @ do?

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 31, 2021, 12:13am UTC](https://discourse.julialang.org/t/how-to-filter-data-with-masks-and-update-with-new-values/67387/4 "2021-08-31T00:13:30Z")

</div>

`@.` makes everything broadcast, without `@.` the line looks like:

```julia
Rec[pi/2 .< phi .< 3*pi/2] .= 0.0

```

c.f  
[https://docs.julialang.org/en/v1/manual/arrays/#Broadcasting](https://docs.julialang.org/en/v1/manual/arrays/#Broadcasting)
