Дана матрица функций (каждая функция может иметь различный лог c). Форма имеет вид [N, x]
.
matrix_of_functions = [
[fun11, fun12, fun13],
[fun21, fun22, fun23],
...
[funN1, funN2, funN3]
]
Также имеется массив параметров с формой [x]
.
array_of_parameters = [param1, param2, param3]
Этот размер имеет такой же размер x
. Параметры должны транслироваться по этому измерению, и должна применяться функция.
Поэтому результирующая матрица (должна быть массивом numpy
в конце):
matrix_of_results = [
[fun11(param1), fun12(param2), fun13(param3)],
[fun21(param1), fun22(param2), fun23(param3)],
...
[funN1(param1), funN2(param2), funN3(param3)]
]
Такое ощущение, что должен быть красивый способ сделать это, но как?
Очевидно, это можно сделать так:
matrix_of_results = []
for array_of_functions in matrix_of_functions:
array_of_results = [fun(param) for fun, param in zip(array_of_functions, array_of_parameters])]:
matrix_of_results.append(array_of_results )
Или более компактно:
matrix_of_results = [
[fun(param) for fun, param in zip(array_of_functions, array_of_parameters])]
for array_of_functions in matrix_of_functions
]
Или многими другими способами ... но это не читабельно и не прекрасно.
Я действительно надеялся, что есть способ numpy
i sh. Это означает, что трансляция выполняется автоматически, поскольку формы [N, x]
и [x]
могут быть переданы. Но, похоже, это не так (np.vectorize
принимает только одну функцию, а не список или матрицу функций).