Есть простая функция, которая принимает скалярный параметр, но работает и с пустой матрицей. Почему функция fun
работает для матрицы?
>>> import numpy as np
>>> def fun(a):
return 1.0 / a
>>> b = 2
>>> c = np.mat([1,2,3])
>>> c
matrix([[1, 2, 3]])
>>> fun(b)
0.5
>>> fun(c)
matrix([[ 1. , 0.5 , 0.33333333]])
>>> v_fun = np.vectorize(fun)
>>> v_fun(b)
array(0.5)
>>> v_fun(c)
matrix([[ 1. , 0.5 , 0.33333333]])
Кажется, что fun
каким-то образом векторизована, потому что явно векторизованная функция v_fun
ведет себя так же на матрице c
. Но они получают разные результаты на скаляре b
. Кто-нибудь может это объяснить? Спасибо.