我正在尝试运行以下代码,但是当它尝试计算峰宽时,会出现以下错误:
TypeError: Cannot cast array from dtype('O') to dtype('int32') according to the rule 'safe'
我已经阅读了scipy.signal.find_peaks
和scipy.signal.peak_widths
上的文档,但是我所阅读的所有内容都告诉我应该做什么。
以下是我正在使用的.csv文件的链接:https://drive.google.com/file/d/18rtoGSRRLmoeOglvuAYvd2S3NeLvw90T/view?usp=sharing
import pandas as pd
import scipy.signal as sp
signal_data = pd.read_csv('Data.csv')
signal = signal_data['Signal']
retention_time = signal_data['Retention Time (s)']
peaks = sp.find_peaks(signal, distance=300, prominence=2000)
print(peaks)
widths = sp.peak_widths(signal, peaks)
print(widths)
任何帮助将不胜感激。
答案 0 :(得分:0)
在documentation示例中可以看到,sp.find_peaks
的输出是一个N维数组。因此,您需要在相关行中执行以下操作。
peaks, _ = sp.find_peaks(signal, distance=300, prominence=2000)