【问题标题】:Cannot cast array data from dtype('0') to dtype('int32') using scipy peak_widths method无法使用 scipy peak_widths 方法将数组数据从 dtype('0') 转换为 dtype('int32')
【发布时间】:2019-08-29 01:59:20
【问题描述】:

我正在尝试运行下面的代码,但是当它尝试计算峰的宽度时,它给了我这个错误:

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)

任何帮助将不胜感激。

【问题讨论】:

  • 您应该更清楚错误发生的位置。当我尝试您的数据时(感谢 csv!)find_peaks 工作正常。引发错误的是 sp.peak_widths 调用。通常我们要求回溯以获取完整的错误信息。 @AchinthaIhalage,在正确的轨道上 - 您只需要使用 find_peaks 输出的一部分,而不是全部。

标签: python python-3.x scipy


【解决方案1】:

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

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

【讨论】:

  • 你能详细说明发生了什么吗?在你的解释有意义之前,我实际上必须运行我自己的测试用例。
猜你喜欢
  • 2020-04-17
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 2020-05-20
相关资源
最近更新 更多