【发布时间】:2019-08-29 01:59:20
【问题描述】:
我正在尝试运行下面的代码,但是当它尝试计算峰的宽度时,它给了我这个错误:
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)
任何帮助将不胜感激。
【问题讨论】:
-
您应该更清楚错误发生的位置。当我尝试您的数据时(感谢 csv!)
find_peaks工作正常。引发错误的是sp.peak_widths调用。通常我们要求回溯以获取完整的错误信息。 @AchinthaIhalage,在正确的轨道上 - 您只需要使用find_peaks输出的一部分,而不是全部。
标签: python python-3.x scipy