From 5b765eb118992539bbd22aec308b1c052f3744f3 Mon Sep 17 00:00:00 2001 From: grantbuster Date: Wed, 5 Jun 2024 11:13:25 -0600 Subject: [PATCH] fix performance issue with slow listcomp on regrid indexing --- sup3r/utilities/regridder.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sup3r/utilities/regridder.py b/sup3r/utilities/regridder.py index c50eede76..bab6cdcf0 100644 --- a/sup3r/utilities/regridder.py +++ b/sup3r/utilities/regridder.py @@ -390,12 +390,12 @@ def __call__(self, data): data = data.reshape((data.shape[0] * data.shape[1], -1)) msg = 'Input data must be 2D (spatial, temporal)' assert len(data.shape) == 2, msg - vals = [ - data[np.array(self.indices), i][np.newaxis] - for i in range(data.shape[-1]) - ] - vals = np.concatenate(vals, axis=0) - return np.einsum('ijk,jk->ij', vals, self.weights).T + + vals = data[np.array(self.indices), :] # index to (space, 4, time) + vals = np.transpose(vals, (2, 0, 1)) # shuffle to (time, space, 4) + + out = np.einsum('ijk,jk->ij', vals, self.weights).T + return out class WindRegridder(Regridder):