无法使用scipy peak_widths方法将数组数据从dtype('0')转换为dtype('int32')

时间:2019-08-28 17:43:19

标签: python python-3.x scipy

我正在尝试运行以下代码,但是当它尝试计算峰宽时,会出现以下错误:

TypeError: Cannot cast array from dtype('O') to dtype('int32') according to the rule 'safe'

我已经阅读了scipy.signal.find_peaksscipy.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)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

documentation示例中可以看到,sp.find_peaks的输出是一个N维数组。因此,您需要在相关行中执行以下操作。

peaks, _ = sp.find_peaks(signal, distance=300, prominence=2000)