Ошибки при преобразовании np.array в десятичное число в Python

Это продолжение заданного здесь вопроса: Экспоненциальное число больших отрицательных чисел. Причина, по которой я хочу использовать десятичное число, заключается в том, что np.exp(-large_numbers) возвращает 0,0. Используя ответ Эрика на этот вопрос: https://stackoverflow.com/a/7771210/6943476, я попытался преобразовать свой np .array в десятичное, но я все равно получаю тип данных
numpy.ndarray.

Способность к кодированию: Новичок

Моя конечная цель состоит в том, чтобы функция возвращала затухающую синусоиду:

def waveform(mass_sm, amplitude, F, Q, phi, Time):
    w = F/mass_sm

    print type(Time)
    Ntime = np.array(Time,dtype=np.dtype(decimal.Decimal))
    priny type(Ntime)

    return mass_sm * amplitude * np.sin(w * Ntime + phi) * np.exp(-w * Ntime/ (2 * Q))

Он попытался отладить код, разбив функцию возврата на синус, а затем на экспоненту:

def waveform(mass_sm, amplitude, F, Q, phi, Time):
    w = F/mass_sm

    print type(Time)
    Ntime = np.array(Time,dtype=np.dtype(decimal.Decimal))
    priny type(Ntime)

    return mass_sm * amplitude * np.sin(w * Ntime + phi)

Выход:

<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
AttributeError: 'float' object has no attribute 'sin'

Для экспоненциальной части я получаю (ожидаемую) ошибку, которая:

AttributeError: объект 'float' не имеет атрибута 'exp'

Я также попытался преобразовать элементы моего массива в десятичные числа, выполнив следующие действия:

    Ntime =  [decimal.Decimal(i) for i in Time]

На этот раз, получая эту ошибку для синуса:

TypeError: невозможно умножить последовательность на не-целое типа 'float'

и эта ошибка для exp:

TypeError: неверный тип операнда для унарного -: 'список'


person Daniel George    schedule 29.03.2017    source источник
comment
Время — зарезервированное ключевое слово. Так что, возможно, беспорядочное поведение происходит из-за этого. Попробуйте переименовать переменные и посмотрите, работает ли это.   -  person Mikael    schedule 29.03.2017
comment
Я все еще получаю сообщение об ошибке при использовании модуля Decimal. print Decimal(np.exp(1))**-28000.2 приводит к TypeError: неподдерживаемый тип(ы) операнда для ** или pow(): 'Decimal' и 'float'. Кажется, десятичные числа не могут обрабатывать поплавки?   -  person Daniel George    schedule 30.03.2017