Я пытаюсь вычислить векторный базис для любого преобразования в R ^ n -> R ^ m.
Чтобы добиться этого, я написал функции lamba для представления фактической функции.Вот некоторые примеры:
R2 -> R2: g1 = lambda x,y: np.array([2*x+y, x+2*y])
R3 -> R1: g3 = lambda x,y,z: np.array([x, -2*y, 3*z])
Чтобы иметь функцию, выполняющую мою работу, я придумал следующее:
def calculate_Vector_Basis(f, numberOfArgs):
"""
Calculates the result for every base vector ex, ey, ...
Params:
f : function with generic number of arguments
numberOfArgs: The number of arguments for the generic function
Returns:
[] : Array of base vectors
"""
# Collection of base vectors
vector_basis = []
for i in range(numberOfArgs):
# Create unit vector e with zeros only
base = np.zeros(numberOfArgs)
# Set 1 where at the axis required (for R3: x = [1 0 0], y = [0 1 0], z = [0 0 1])
base[i] = 1
# Call function f for every unit vector e
vector_basis.append(f(base[0], base[1]))
return vector_basis
Функция должна повторяться и создавать единичные векторы в соответствии с размерностью заданнойn-мерная комната рациональных чисел.
Образцы:
R2 = [1 0], [0 1]
R3 = [1 0 0], [0 1 0], [0 0 1]
Я застрял там, где хочу вызвать переданное значение lambda function f
.
На основе f's
определение, мне нужно от 1 до 5 параметров.
Для R2 мне нужно будет позвонить f(base[0], base[1])
в R3, мне нужно будет позвонить f(base[0], base[1], base[2])
.base
- это ndarray
, который выглядит следующим образом [xval, yval, ...]
.Есть ли возможность вызвать f с every value in the ndarray
?