在 Python/Google Colab 上查找频谱峰值时遇到问题

问题描述

我有一个光谱(油样)作为 cvs 文件中的二维阵列,我想找到波长 600 - 1800 cm-1 的峰值。我试过 scipy.signal.find_peaks 但这需要一个一维数组,我有一个带有波长和相应峰值的二维数组。 任何帮助都会得到认可,因为我是 Python 的初学者

编辑:我还尝试执行以下操作:

从detecta导入detect_peaks

ind = detect_peaks(df)

其中 df 是我的数组的名称(它有两列)并弹出一个错误:ValueError:所有输入数组必须具有相同的维数,但索引 0 处的数组有 2 维,并且索引 1 处的数组有 1 个维度

解决方法

scipy.signal.find_peaks() 仅采用包含峰值的一维数组。因此,您应该能够选择 DataFrame 中具有峰值的列,如下所示:

# note that find_peaks returns an array of peak indices,and a dictionary of properties 
ind,properties = scipy.signal.find_peaks(df["name of column with peaks"]) 

然后,如果您只想要峰值,请使用您刚刚创建的 ind 数组选择行:

peak_df = df[df.index.isin(ind)]