python - 在python中计算全宽半最大值
问题描述
我正在尝试在 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
这是情节的样子
解决方案
如果我理解正确,只需对您的代码进行最少的更改:
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 个列表。
推荐阅读
- pandas - Keras OCR 保存结果
- microsoft-teams - Microsoft Teams 中的关闭/删除 MessageCard 操作
- c# - ENtity 框架中事务机制的用途是什么?
- python - 如何将多个持有整数的值转换为持有单值Python
- java - 实现 Google Pub Sub 的方法
- android - 颤振Android资源链接失败@mipmap/ic_launcher未找到
- typescript - 必须以特定字符开头的打字稿字符串类型
- php - Laravel 如果类型是 this 或 this
- javascript - Javascript(中断)
- forms - 无法使用 AEM 表单发送电子邮件