Невозможно векторизовать эту функцию — работает с константами, но возвращает операнды ValueError, которые невозможно перPython

Программы на Python
Ответить
Anonymous
 Невозможно векторизовать эту функцию — работает с константами, но возвращает операнды ValueError, которые невозможно пер

Сообщение Anonymous »

Я написал функцию Python, которая должна была поддерживать векторизацию, используя np.where и np.maximum. Однако при попытке вызвать эту функцию путем передачи столбцов фрейма данных я получаю сообщение об ошибке «ValueError: операнды не могут быть переданы вместе с фигурами (2,20) (2,)».
Функция отлично работает при передаче констант. Я почти уверен, что это связано с тем, как я нарезаю массив констант montecarlo[j], но понятия не имею, как его переписать, чтобы обеспечить векторизацию.
примечание x — это массив формы 250х20, случайные числа подойдут.

Код: Выделить всё

import numpy as np
np.random.seed(5)
x = stats.montecarlo_brownian(4.5, 1, 250, .15, sims=20)
j = 249
otype = 'p'
k = 4.0

def montecarlo_payouts(montecarlo, j, otype, k, kotype = None, b = 0, i=1):
#adjust daycount for index starting at 0
i = i - 1
j = j - 1
#vanilla option payoffs for call and put
payoff = np.where(otype=='c', np.maximum(montecarlo[j] - k, 0), np.maximum(k - montecarlo[j], 0))
return payoff.mean()

df = pd.DataFrame({'days': [230,250], 'otype': ['c','p'], 'strike': [4.8,4.3]})
payout = montecarlo_payouts(x, 250, df['otype'], 5)
если я заменю df['otype'] одним значением 'c', код будет работать нормально

Подробнее здесь: https://stackoverflow.com/questions/791 ... error-oper
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»