Функция векторизации Numpy для работы со строками
Предположим, я хочу векторизовать функцию f
следующим образом, так что он применяется построчно к матрице:
f_vec = np.vectorize(
f,
signature = '(m,n)->m'
)
f_vec
следует применять f
в каждую строку входной матрицы и вернуть вектор результата. Однако я получаю сообщение об ошибке:
ValueError: not a valid gufunc signature: (m,n)->m
Что я делаю неправильно?
1 ответ
Я использовал (m,n)->(m)
как подпись, потому что я думал signature
должен был быть сигнатурой векторизованной функции. Тем не менее, это на самом деле должно быть подписью pyfunc
! Так что в моем случае подпись будет (m)->()
за f
, уступая (m,n)->(m)
за f_vec
, Другими словами, этот код работает:
f_vec = np.vectorize(f, signature='(m)->()')
Это говорит о том, что f
переводит вектор в скаляр, что означает f_vec
переводит матрицу в вектор