python中查找列表中的数值_python – 在列表中查找值为!= 0的值组

我正在寻找一种在python列表中找到“高原”或组的简单方法.作为输入我有这样的事情:

mydata = [0.0, 0.0, 0.0, 0.0, 0.0, 0.143, 0.0, 0.22, 0.135, 0.44, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.33, 0.65, 0.22, 0.0, 0.0, 0.0, 0.0, 0.0]

我想提取每个“组”的中间位置.在这种情况下,group被定义为!= 0的数据,例如至少3个位置.应忽略飞地的单个零(如位置6).

基本上我想获得以下输出:

myoutput = [8, 20]

对于我的用例,获得非常精确的输出数据并不重要. [10,21]仍然可以.

总结一切:第一组:[0.143,0.0,0.22,0.135,0.44,0.1];第二组:[0.33,0.65,0.22].现在中间元素的位置(如果没有真正的中间值,则从中间向左或向右).所以在输出8中将是第一组的中间,20是第二组的中间.

我已经尝试了一些方法.但它们并不像我想要的那样稳定(例如:更多的飞地可能会导致问题).所以在投入更多时间在这个想法之前,我想问一下是否有更好的方法来实现这个功能.我甚至认为这可能是一个普遍的问题.可能已经有标准代码解决了吗?

有other questions描述了大致相同的问题,但我还需要在处理之前“平滑”数据.

1.)平滑数据 – 摆脱飞地的零点

import numpy as np

def smooth(y, box_pts):

box = np.ones(box_pts)/box_pts

y_smooth = np.convolve(y, box, mode='same')

retu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值