Примените несколько функций к каждой строке массива - PullRequest
1 голос
/ 27 марта 2019

Допустим, у нас есть матрица из 3 строк и 2 столбцов как mat, и я хочу применить к каждой 3 строке одну из функций списка what_functions_to_apply_list, для которых у меня есть определение.Таким образом, выходное значение np.apply_along_axis должно быть в 3 строки больше выходного размера функций.

Как я могу сделать это без зацикливания векторным способом?

Например,

def f1(inp1,inp2):
     return out1, out2

, где

 functions_dic = {'f1': func1, 'f2':func2, 'f3':func3}
 what_functions_to_apply_list = ['f1','f1','f2']
 funcs_inputs = [[inp11,inp12], [inp21,inp32], [inp31,inp32]]
 mat = np.ones((3, 2))
 np.apply_along_axis(what_functions_to_apply_list , 1, mat)

1 Ответ

0 голосов
/ 27 марта 2019

Прямое применение списка функций к строкам массива:

In [418]: alist = [np.add, np.subtract, np.multiply]                            
In [419]: data = np.arange(6).reshape(3,2)                                      
In [420]: [foo(*ab) for foo, ab in zip(alist, data)]                            
Out[420]: [1, -1, 20]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...