Helper function for ma.correlate and ma.convolve
(f, a, v, mode, propagate_mask)
| 7961 | |
| 7962 | |
| 7963 | def _convolve_or_correlate(f, a, v, mode, propagate_mask): |
| 7964 | """ |
| 7965 | Helper function for ma.correlate and ma.convolve |
| 7966 | """ |
| 7967 | if propagate_mask: |
| 7968 | # results which are contributed to by either item in any pair being invalid |
| 7969 | mask = ( |
| 7970 | f(getmaskarray(a), np.ones(np.shape(v), dtype=bool), mode=mode) |
| 7971 | | f(np.ones(np.shape(a), dtype=bool), getmaskarray(v), mode=mode) |
| 7972 | ) |
| 7973 | data = f(getdata(a), getdata(v), mode=mode) |
| 7974 | else: |
| 7975 | # results which are not contributed to by any pair of valid elements |
| 7976 | mask = ~f(~getmaskarray(a), ~getmaskarray(v)) |
| 7977 | data = f(filled(a, 0), filled(v, 0), mode=mode) |
| 7978 | |
| 7979 | return masked_array(data, mask=mask) |
| 7980 | |
| 7981 | |
| 7982 | def correlate(a, v, mode='valid', propagate_mask=True): |