(x, axes=None, inverse=False)
| 281 | |
| 282 | |
| 283 | def _fftshift_helper(x, axes=None, inverse=False): |
| 284 | if axes is None: |
| 285 | axes = list(range(x.ndim)) |
| 286 | elif not isinstance(axes, Sequence): |
| 287 | axes = (axes,) |
| 288 | |
| 289 | y = x |
| 290 | for i in axes: |
| 291 | n = y.shape[i] |
| 292 | n_2 = (n + int(inverse is False)) // 2 |
| 293 | |
| 294 | l = y.ndim * [slice(None)] |
| 295 | l[i] = slice(None, n_2) |
| 296 | l = tuple(l) |
| 297 | |
| 298 | r = y.ndim * [slice(None)] |
| 299 | r[i] = slice(n_2, None) |
| 300 | r = tuple(r) |
| 301 | |
| 302 | y = _concatenate([y[r], y[l]], axis=i) |
| 303 | |
| 304 | if len(x.chunks[i]) == 1: |
| 305 | y = y.rechunk({i: x.chunks[i]}) |
| 306 | |
| 307 | return y |
| 308 | |
| 309 | |
| 310 | @derived_from(np.fft) |
no test coverage detected