DataFrame在函数最大值处返回值

时间:2015-04-08 00:29:50

标签: python-3.x numpy pandas signal-processing

对于狭窄的带状处理,我希望在峰值频率仓处出现复杂的压力。为了找到峰值频率仓,我在一小段频率范围内使用绝对值最高的频率。

我提出了以下代码,大量借鉴

Use idxmax for indexing in pandas

这在我看来很笨重,而且难以概括。理想情况下,我希望能够将fBins变成一个数组,并立即返回许多频率。可以将maxAbsIndex放入列表中,但我看不到下一步。

import numpy as np
import pandas as pd

# Construct fake frequency data on multiple channels
np.random.seed(0)
numF = 1000
f = np.arange(numF) / (numF * 2)
y = np.random.randn(numF, 2) + 1j * np.random.randn(numF, 2)

# Put time series into a DataFrame, indexed by frequency
yFrame = pd.DataFrame(y, index = f)

fBins = 0.1
tol = 0.01

# Find the index of the maxium absolute value within a given frequency window
absMaxIndex = yFrame[(fBins - tol) : (fBins + tol)].abs().idxmax()

# Return the value at this index
value = [yFrame.ix[items[1], items[0]] for items in absMaxIndex.iteritems()]
print(value)

值应具有复杂值

[( - 2.0946030712061448-1.0585718976053677j),( - 2.7396771671895563 + 0.79204149842297422j)]

每个通道的yFrame绝对值最大,介于0.09和0.11 Hz之间。

0 个答案:

没有答案