Source code for exosim.utils.operations
import operator
import numpy as np
[docs]ops = {
"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv,
"%": operator.mod,
"^": operator.xor,
}
[docs]def operate_over_axis(
matrix: np.ndarray, vector: np.ndarray, axis: int, operation: str = "*"
) -> np.ndarray:
"""
This function is used to perform an operation over a given axis of a matrix.
Parameters
----------
matrix : np.ndarray
N dimensional array
vector : np.ndarray
1 dimensional array
axis : int
axis to operate over
operation : str, optional
operator symbol, by default "*"
Returns
-------
np.ndarray
operated matrix
"""
axis_index = [np.newaxis] * matrix.ndim
axis_index[axis] = slice(None)
axis_index = tuple(axis_index)
matrix = ops[operation](matrix, vector[axis_index])
return matrix