diff --git a/chainladder/adjustments/bootstrap.py b/chainladder/adjustments/bootstrap.py index fa9d17b2..344d0035 100644 --- a/chainladder/adjustments/bootstrap.py +++ b/chainladder/adjustments/bootstrap.py @@ -258,7 +258,7 @@ def _get_simulation(self, X, exp_incr_triangle): ) b = xp.repeat(exp_incr_triangle[None, ...], self.n_sims, 0) resampled_triangles = (resampled_residual * xp.sqrt(abs(b)) + b).cumsum(2) - resampled_triangles = xp.swapaxes(resampled_triangles[None, ...], 0, 1) + resampled_triangles = resampled_triangles[None, ...].swapaxes(0, 1) obj = X.copy() if X.key_labels == ['Total']: obj.kdims = np.arange(self.n_sims) diff --git a/chainladder/development/clark.py b/chainladder/development/clark.py index 241632b0..6a39e3ad 100644 --- a/chainladder/development/clark.py +++ b/chainladder/development/clark.py @@ -335,7 +335,7 @@ def solver(x: ndarray): if sample_weight: self.elr_ = pd.DataFrame(params[..., 0, 2], index=rows, columns=X.vdims) ultimate_ = ( - xp.swapaxes(self._G(age=(latest_age - age_offset)[::-1]), -1, -2) + self._G(age=(latest_age - age_offset)[::-1]).swapaxes(-1, -2) * ld.values ) self.incremental_fits_ = X.copy() diff --git a/chainladder/development/development.py b/chainladder/development/development.py index 7a630ff5..3e520a33 100644 --- a/chainladder/development/development.py +++ b/chainladder/development/development.py @@ -431,7 +431,7 @@ def fit(self, X: TriangleLike, y: None = None, sample_weight: None = None): w_reg = params._w_reg params = xp.concatenate((params.slope_, params.sigma_, params.std_err_), 3) - params = xp.swapaxes(params, 2, 3) + params = params.swapaxes(2, 3) self.ldf_ = self._param_property(obj, params, 0) self.sigma_ = self._param_property(obj, params, 1) diff --git a/chainladder/development/munich.py b/chainladder/development/munich.py index 7210c822..9e823bf8 100644 --- a/chainladder/development/munich.py +++ b/chainladder/development/munich.py @@ -223,7 +223,7 @@ def _get_MCL_model(self, X): modelsI = modelsI.fit(i, p, 1 / i).sigma_fill(X.sigma_interpolation) q_f = self._p_to_i_concate(modelsP.slope_, modelsI.slope_, xp) rho_sigma = self._p_to_i_concate(modelsP.sigma_, modelsI.sigma_, xp) - return xp.swapaxes(q_f, -1, -2), xp.swapaxes(rho_sigma, -1, -2) + return q_f.swapaxes(-1, -2), rho_sigma.swapaxes(-1, -2) def _get_MCL_resids(self, X): xp = X.get_array_module() diff --git a/chainladder/development/tests/test_development.py b/chainladder/development/tests/test_development.py index ba781a2d..d8bd8c72 100644 --- a/chainladder/development/tests/test_development.py +++ b/chainladder/development/tests/test_development.py @@ -35,7 +35,7 @@ def fit(self, X, y: None = None, sample_weight: None = None): params = cl.WeightedRegression(axis=2, thru_orig=True, xp=xp).fit( reg_x, reg_y, self.w_.values, average_param ) - self.ldf_ = self.dev._param_property(X, xp.swapaxes(params.slope_, 2, 3), 0) + self.ldf_ = self.dev._param_property(X, params.slope_.swapaxes(2, 3), 0) return self def test_full_slice(genins): @@ -856,4 +856,4 @@ def test_sigma1(atol): cl.Development(average='simple').fit(tri).sigma_.values, cl.Development(average='regression').fit(tri).sigma_.values, atol = atol - ) \ No newline at end of file + ) diff --git a/chainladder/methods/capecod.py b/chainladder/methods/capecod.py index 03139b81..4175e2ae 100644 --- a/chainladder/methods/capecod.py +++ b/chainladder/methods/capecod.py @@ -251,11 +251,11 @@ def _get_capecod_aprioris(self, X, sample_weight): decay_matrix = self.decay ** xp.abs( xp.arange(len_orig)[None].T - xp.arange(len_orig)[None] ) - weighted_exposure = xp.swapaxes(reported_exposure.values, -1, -2) * decay_matrix + weighted_exposure = reported_exposure.values.swapaxes(-1, -2) * decay_matrix trended_ultimate = (latest.values * trend_array * X_olf_array) / ( reported_exposure.values * sw_olf_array ) - trended_ultimate = xp.swapaxes(trended_ultimate, -1, -2) + trended_ultimate = trended_ultimate.swapaxes(-1, -2) apriori = xp.nansum(weighted_exposure * trended_ultimate, -1) / xp.nansum( weighted_exposure, -1 ) diff --git a/chainladder/utils/weighted_regression.py b/chainladder/utils/weighted_regression.py index 925ac5d6..1497587a 100644 --- a/chainladder/utils/weighted_regression.py +++ b/chainladder/utils/weighted_regression.py @@ -174,7 +174,7 @@ def std_err_fill(self): self.std_err_ = xp.nan_to_num(self.std_err_) + xp.nan_to_num( (1 - xp.nan_to_num(self.std_err_ * 0 + 1)) * self.sigma_ - / xp.swapaxes(xp.sqrt(self.x ** (2 - self.exponent_))[..., 0:1, :], -1, -2) + / xp.sqrt(self.x ** (2 - self.exponent_))[..., 0:1, :].swapaxes(-1, -2) ) return self