Source code for skbel.algorithms.extmath

import numpy as np

__all__ = [
    "get_block",
    "matrix_paste",
]

from scipy.spatial import distance_matrix


[docs] def get_block(pm: np.array, i: int) -> np.array: """Extracts block from a 2x2 partitioned matrix. :param pm: Partitioned matrix :param i: Block index [[1,2], [3,4]] :return: Block """ b = pm.shape[0] // 2 if i == 1: return pm[:b, :b] if i == 2: return pm[:b, b:] if i == 3: return pm[b:, :b] if i == 4: return pm[b:, b:] else: return 0
[docs] def matrix_paste(c_big: np.array, c_small: np.array) -> list: """Pastes a small matrix into a big matrix. :param c_big: Big matrix :param c_small: Small matrix """ # Compute distance matrix between refined and dummy grid. dm = distance_matrix(c_big, c_small) inds = [ np.unravel_index(np.argmin(dm[i], axis=None), dm[i].shape)[0] for i in range(dm.shape[0]) ] return inds