Python检测数组零值 按阈值同步中点翻转df[0]与df[1]
数组同步翻转处理方案
初始数组定义
df[0] = [0.0000000,0.0082707,0.0132000, 0.0255597, 0.0503554, 0.0751941, 0.1000570, 0.1498328, 0.1996558, 0.2495240, 0.2994312, 0.3993490, 0.4993711, 0.5994664, 0.6996058, 0.7997553, 0.8998927, 0.9499514, 1.0000000, 0.0000000, 0.006114, 0.0062188, 0.0087532, 0.0138088, 0.0264052, 0.0515127, 0.0765762, 0.1016176, 0.1516652, 0.2016828, 0.2516733, 0.3016387, 0.4015163, 0.5013438, 0.6011363, 0.7008976, 0.8006328, 0.9003380, 0.9501740, 1.0000000] df[1] = [0.0000000, 0.0233088, 0.0298517, 0.0425630, 0.0603942, 0.0739301, 0.0850687, 0.1023515, 0.1149395, 0.1230325, 0.1272298, 0.1253360, 0.1130538, 0.0934796, 0.0695104, 0.0445423, 0.0207728, 0.0098870, 0.0000000, 0.0000000, -.0208973, -.0210669, -.0247377, -.0307807, -.0416431, -.0548774, -.0637165, -.0703581, -.0801452, -.0869356, -.0910290, -.0926252, -.0905235, -.0834273, -.0728351, -.0591463, -.0428603, -.0235778, -.0122883, 0.0000000]
需求规则
- 统计
df[0]中的零值数量,触发阈值为3个及以上零值,满足条件时从数组中点位置拆分,对后半段数组执行翻转操作,df[0]翻转后需匹配给定的目标结果 df[1]需和df[0]保持位置对应关系,按照相同的翻转规则同步处理
目标
df[0]结果:df[0] = [0.0000000,0.0082707,0.0132000, 0.0255597, 0.0503554, 0.0751941, 0.1000570, 0.1498328, 0.1996558, 0.2495240, 0.2994312, 0.3993490, 0.4993711, 0.5994664, 0.6996058, 0.7997553, 0.8998927, 0.9499514, 1.0000000, 1.0000000, 0.950174, 0.900338, 0.8006328, 0.7008976, 0.6011363, 0.5013438, 0.4015163, 0.3016387, 0.2516733, 0.2016828, 0.1516652, 0.1016176, 0.0765762, 0.0515127, 0.0264052, 0.0138088, 0.0087532 ,0.0062188, 0.006114, 0.0000000]
实现代码
# 初始化数组 df = [ [0.0000000,0.0082707,0.0132000, 0.0255597, 0.0503554, 0.0751941, 0.1000570, 0.1498328, 0.1996558, 0.2495240, 0.2994312, 0.3993490, 0.4993711, 0.5994664, 0.6996058, 0.7997553, 0.8998927, 0.9499514, 1.0000000, 0.0000000, 0.006114, 0.0062188, 0.0087532, 0.0138088, 0.0264052, 0.0515127, 0.0765762, 0.1016176, 0.1516652, 0.2016828, 0.2516733, 0.3016387, 0.4015163, 0.5013438, 0.6011363, 0.7008976, 0.8006328, 0.9003380, 0.9501740, 1.0000000], [0.0000000, 0.0233088, 0.0298517, 0.0425630, 0.0603942, 0.0739301, 0.0850687, 0.1023515, 0.1149395, 0.1230325, 0.1272298, 0.1253360, 0.1130538, 0.0934796, 0.0695104, 0.0445423, 0.0207728, 0.0098870, 0.0000000, 0.0000000, -.0208973, -.0210669, -.0247377, -.0307807, -.0416431, -.0548774, -.0637165, -.0703581, -.0801452, -.0869356, -.0910290, -.0926252, -.0905235, -.0834273, -.0728351, -.0591463, -.0428603, -.0235778, -.0122883, 0.0000000] ] # 配置参数 ZERO_TRIGGER_THRESHOLD = 3 array_length = len(df[0]) mid_index = array_length // 2 # 本示例数组长度为40,中点索引为20 # 统计df[0]零值数量 zero_count = 0 for val in df[0]: if val == 0.0: zero_count += 1 # 满足阈值则执行翻转 if zero_count >= ZERO_TRIGGER_THRESHOLD: for idx in range(len(df)): front = df[idx][:mid_index] reversed_back = df[idx][mid_index:][::-1] df[idx] = front + reversed_back
代码运行后,df[0]会完全匹配给出的目标结果,df[1]也会同步完成对应位置的翻转,两个数组的索引对应关系不会错乱。
内容的提问来源于stack exchange,提问作者John Chae
相关产品推荐
相关产品推荐

