从python中的对数差返回自然数
我正在处理时间序列数据,并使用从python中的对数差返回自然数,python,numpy,time-series,difference,logarithm,Python,Numpy,Time Series,Difference,Logarithm,我正在处理时间序列数据,并使用numpy将数字转换为对数差 df['dlog']= np.log(df['columnx']).diff() 然后我用这种转变做出了预测 我怎样才能恢复正常数字? 无需反转转换,因为columnx仍存在于df .diff()计算一个系列元素与另一个系列元素的差异 系列中的元素。 dlog的第一行是NaN。如果没有“基本”编号(例如,np.log(764677)),就无法退回转换 输出: 用np.exp 使用np.exp将对数刻度转换为线性刻度 输出:
numpy
将数字转换为对数差
df['dlog']= np.log(df['columnx']).diff()
然后我用这种转变做出了预测
我怎样才能恢复正常数字?- 无需反转转换,因为
仍存在于columnx
df
计算一个系列元素与另一个系列元素的差异 系列中的元素。.diff()
的第一行是dlog
。如果没有“基本”编号(例如,NaN
),就无法退回转换np.log(764677)
np.exp
- 使用
将对数刻度转换为线性刻度np.exp
- 如果没有可复制的集合,就不可能提供进一步的解决方案
- 您可以包括一些数据:
- 包括用于转换数据的代码:
- 另一个选项是,不使用
np.log
numpy.log
提供一个结果数组,因为它是一个多值函数,没有一个数字。但是,数组中的数字是“正常”的,除了没有正常数值的值,如Inf
。您是否正在寻找从这些值到float
的方法?换句话说,你能举一个例子说明你尝试了什么,你得到了什么,你期望得到什么吗?
df = pd.DataFrame({'columnx': [np.random.randint(1_000_000) for _ in range(100)]})
df['dlog'] = np.log(df.columnx).diff()
columnx dlog
764677 NaN
884574 0.145653
621005 -0.353767
408960 -0.417722
248456 -0.498352
df = pd.DataFrame({'columnx': [np.random.randint(1_000_000) for _ in range(100)]})
df['log'] = np.log(df.columnx)
df['linear'] = np.exp(df.log)
columnx log linear
412863 12.930871 412863.0
437565 12.988981 437565.0
690926 13.445788 690926.0
198166 12.196860 198166.0
427894 12.966631 427894.0