在Python中将np.array转换为十进制时出错

时间:2017-03-29 17:53:47

标签: python decimal exponential sine

这是问题的延续:Exponential of large negative numbers。我想使用小数的原因是np.exp(-large_numbers)返回0.0。使用Eric对这个问题的回答: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:&#39; float&#39;对象没有属性&#39; exp&#39;

我还尝试通过这样做将我的数组元素转换为十进制:

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

这次,正确的错误:

  

TypeError:不能将序列乘以非int类型&#39; float&#39;

以及exp:

的错误
  

TypeError:一元的坏操作数类型 - :&#39; list&#39;

0 个答案:

没有答案