gpt4 book ai didi

python - 在 Pandas 数据帧中存储 FFT 周期时出现奇怪的问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:27 27 4
gpt4 key购买 nike

我正在尝试将 FFT 计算的结果存储在 Pandas 数据框中:

ft = pd.DataFrame(index=range(90))
ft['y'] = ft.index.map(lambda x: np.sin(2*x))
ft['spectrum'] = np.fft.fft(ft['y'])
ft['freq'] = np.fft.fftfreq(len(ft.index)).real
ft['T'] = ft['freq'].apply(lambda f: 1/f if f != 0 else 0)

一切似乎都工作正常,直到最后一行:应该存储周期的列 T 由于某种原因具有框架的所有列,即:

In [499]: ft.T[0]
Out[499]:
y 0j
spectrum (0.913756021471+0j)
freq 0j
T 0j
Name: 0, dtype: complex128

我不明白这是为什么。当我只取频率的实部时也会发生这种情况:

ft['freq']  = np.fft.fftfreq(len(ft.index)).real

或者我尝试使用替代方法计算 T 值,例如:

ft.T = ft.index.map(lambda i: 1/ft.freq[i] if ft.freq[i] else np.inf)
ft.T = 1/ft.freq

当我对它们运行 head()describe() 时,所有其他列看起来都很整洁,无论它们包含实数还是复数值。 freq 列看起来像一个普通的一维序列,因为 np.fft.fftfreq() 返回一维复数数组,那么 T 列如此困惑的原因可能是什么?

我正在使用 Pandas v.1.19.2 和 Numpy v.1.12.0。

最佳答案

Pandas DataFrame 对象有 a property称为T,用于“转置DataFrame对象的索引和列”。如果您使用不同的列名称而不是 T,一切都会按预期工作。

关于python - 在 Pandas 数据帧中存储 FFT 周期时出现奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com