在Python/Google Colab上查找频谱峰值时遇到问题
我有一个光谱(石油样本),作为cvs文件中的2D阵列,我想找到波长为600-1800 cm-1的峰值。我尝试了scipy.signal.find_peaks,但这需要一个一维数组,我有一个二维数组,其中包含波长和相应的峰值。 任何帮助都会很感激,因为我是python的初学者 编辑:我还尝试了以下操作: 从detecta导入detect_峰值 ind=检测峰值(df)在Python/Google Colab上查找频谱峰值时遇到问题,python,matlab,numpy,data-analysis,spectra,Python,Matlab,Numpy,Data Analysis,Spectra,我有一个光谱(石油样本),作为cvs文件中的2D阵列,我想找到波长为600-1800 cm-1的峰值。我尝试了scipy.signal.find_peaks,但这需要一个一维数组,我有一个二维数组,其中包含波长和相应的峰值。 任何帮助都会很感激,因为我是python的初学者 编辑:我还尝试了以下操作: 从detecta导入detect_峰值 ind=检测峰值(df) 其中df是我的数组(有两列)的名称,会弹出一个错误:ValueError:所有输入数组的维数必须相同,但索引0处的数组有两个维数,
其中df是我的数组(有两列)的名称,会弹出一个错误:ValueError:所有输入数组的维数必须相同,但索引0处的数组有两个维数,索引1处的数组有一个维数。
scipy.signal.find\u peaks()
只接受包含峰值的一维数组。因此,您应该能够选择数据帧中具有峰值的列,如下所示:
# 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)]
谢谢你的帮助,我把它放进去了,但它没有出现任何峰值,输出是:空数据帧列:[cm,A]索引:[]是
ind
填充了find_peaks()
?我想是吗?这是我的代码:ind=scipy.signal.find_peaks(df[“cm”])peak_df=df[df.index.isin(ind)]打印(peak_df)使用“A”
列,而不是“cm”
列。厘米当然是指上升波长(没有峰值)和振幅是的,对不起,我的错。我将其更改为A列,它仍然提供相同的输出