Проблема с функцией np.vectorize в Python - PullRequest
0 голосов
/ 10 февраля 2020

Я создал этот код, как показано ниже:

def scalar_function(x, y):
    if x <= y:
        z = x*y
    else:
        z = x/y
    return z

И

def vector_function(x, y):
    vfunc = np.vectorize(scalar_function)
    return vfunc

Но когда я пытаюсь поставить: vector_function([1, 2, 3, 4], 2), вывод будет <numpy.vectorize at 0x226a1d9aeb8> вместо результата массив чисел.

Кто-нибудь может указать на мою ошибку? Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Нет необходимости для np.vectorize:

x = np.asarray(x)
y = np.asarray(y)
np.where(x <= y, x*y, x/y)

делает то же самое и фактически векторизовано .

0 голосов
/ 10 февраля 2020

У вас есть возврат return vfunc, который возвращает векторизованную функцию, которую вы получили. Вы можете хотеть return vfunc(x,y)

>>> def vector_function(x, y):
        vfunc = np.vectorize(scalar_function)
        return vfunc(x, y)

>>> vector_function([1, 2, 3, 4], 2)
array([2, 4, 1, 2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...