Helper function for ma.correlate and ma.convolve
(f, a, v, mode, propagate_mask)
| 8350 | |
| 8351 | |
| 8352 | def _convolve_or_correlate(f, a, v, mode, propagate_mask): |
| 8353 | """ |
| 8354 | Helper function for ma.correlate and ma.convolve |
| 8355 | """ |
| 8356 | if propagate_mask: |
| 8357 | # results which are contributed to by either item in any pair being invalid |
| 8358 | mask = ( |
| 8359 | f(getmaskarray(a), np.ones(np.shape(v), dtype=bool), mode=mode) |
| 8360 | | f(np.ones(np.shape(a), dtype=bool), getmaskarray(v), mode=mode) |
| 8361 | ) |
| 8362 | data = f(getdata(a), getdata(v), mode=mode) |
| 8363 | else: |
| 8364 | # results which are not contributed to by any pair of valid elements |
| 8365 | mask = ~f(~getmaskarray(a), ~getmaskarray(v), mode=mode) |
| 8366 | data = f(filled(a, 0), filled(v, 0), mode=mode) |
| 8367 | |
| 8368 | return masked_array(data, mask=mask) |
| 8369 | |
| 8370 | |
| 8371 | def correlate(a, v, mode='valid', propagate_mask=True): |