问题描述
我有一个光谱(油样)作为 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)]