【问题标题】:Calculating full width half max in python在python中计算全宽半最大值
【发布时间】:2021-08-15 00:38:57
【问题描述】:

我正在尝试在 python 中自动化全角半最大值。我有一个包含 6 行(信号)的数据框。我可以一次只为一个信号做,但我想为数据帧中的所有信号做。到目前为止,我的代码如下所示:

首先我导入并绘制数据框只是为了了解所有内容的外观,如下所示:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv("Values_S250_3_level_YS.csv")
plt.plot(df)

然后我创建一个列表,将数据框中的所有值打印到其中,如下所示:

listb = []      # to print all the values of dataframe in a list form
for name, values in df.iteritems():
    print('{name}: {value}'.format(name=name, value=values))
    listb.append(values)

到目前为止一切都很好。接下来,我想找到listb中大于最大值一半的值,

xss = []        # to get a list of 
for x in range(len(listb)):
    for a in range(len(listb[x])):
        if listb[x][a] > max(listb[x])/2.0:
            xss.append(a)
    
print(xss)

现在这工作正常,但我遇到的问题是所有 6 行的所有结果都附加到一个列表 (xss) 中,因此

[32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92]

如何在我的 for 循环中创建 6 个不同的列表? 一旦我有了它,我将能够找到 min(xss) 和 max(xss) 来找到差异,这对应于每行的全角半最大值。

如果您想尝试,这里是 csv 文件的链接:

https://drive.google.com/file/d/1Doxzr4I7-baQptbBBct-FFQOMsMmy9In/view?usp=sharing

这是剧情的样子

【问题讨论】:

    标签: python python-3.x pandas dataframe automation


    【解决方案1】:

    如果我理解正确,只需对您的代码进行最少的更改:

    xss = []
    for x in range(len(listb)):
        xss_current = []
        for a in range(len(listb[x])):
            if listb[x][a] > max(listb[x])/2.0:
                xss_current.append(a)
        xss.append(xss_current)
    

    现在 xss 包含 6 个列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2014-09-27
      • 2020-05-21
      • 2017-08-18
      • 1970-01-01
      相关资源
      最近更新 更多