ShiC的自习室 2022-10-06 00:32 采纳率: 50%
浏览 35
已结题

python如何根据阈值选择数据?

Python如何根据阈值选择数据?

我在下面有一个数组:
a=np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1])
我想要的是在此向量上用阈值选择数据。

问题1:以threshold=8为例,大于等于8的元素保留,小于8为0。
输出向量应该是这样的:
a_output = [0, 0, 0, 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 0,]

问题2:以threshold=8为例,大于等于8的元素保留,并且向两边扩展保留两个数据,小于8为0。
输出向量应该是这样的:
a_output = [0, 0, 0, 0, 0, 6, 7, 8, 9, 8, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 8, 7, 6, 0, 0, 0, 0, 0,]

(希望能获得解答,不知道我的表述是否清晰)

  • 写回答

1条回答 默认 最新

  • ·星辰大海 2022-10-06 10:11
    关注
    
    from hashlib import new
    import numpy as np
    
    a=np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1])
    threshold=8
    a_output=np.copy(a)
    a[np.where(a_output<threshold)]=0
    print(a_output)
    index=np.where(a>=threshold)[0]
    new_index=set()
    for i in index:
        for j in range(i-2,i+3):
            new_index.add(j)
    a_output=np.array([a[i] if i in new_index else 0 for i in range(len(a))])
    print(a_output)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助