这是问题的延续: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;