Функция векторизации 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 переводит матрицу в вектор

Другие вопросы по тегам