You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NumPy查找数据同比降幅至少达5%的对应年份

NumPy筛选同比降幅≥5%年份的实现方案

核心思路

直接利用NumPy数组的向量化运算能力,不需要手写逐行遍历的循环,三步就能出结果:

  • 用数组切片计算相邻两年的同比变化率,公式为(当年指标值 - 上年指标值) / 上年指标值 * 100,结果为负代表同比下降
  • 变化率数组长度比原数据少1,第i位的变化率对应原数组第i+1位年份的同比情况,直接做布尔筛选找出变化率≤-5%的条目
  • 提取匹配的年份和对应降幅的绝对值,按要求格式化输出即可

完整实现代码

import numpy as np

# 定义原始输入数组
Year = np.array([2010,  2011,  2012,  2013,  2014, 2015,  2016, 2017, 2018, 2019])
Data = np.array([29057, 30979, 31746, 32964, 31738, 31010,31158,28736,26821,28260])

# 计算所有年份相对上一年的同比变化率(单位:%)
yoy_rate = (Data[1:] - Data[:-1]) / Data[:-1] * 100
# 筛选出降幅≥5%的条目
match_mask = yoy_rate <= -5
# 提取匹配的年份、对应降幅(取绝对值转为正的百分比)
match_years = Year[1:][match_mask]
match_drop_rate = np.abs(yoy_rate[match_mask])

# 按指定格式输出结果
for year, rate in zip(match_years, match_drop_rate):
    print(f"数据降幅至少达5%的年份:({year}, {rate:.2f}%)")

运行输出结果

数据降幅至少达5%的年份:(2017, 7.77%)
数据降幅至少达5%的年份:(2018, 6.66%)

校验说明:2017年之前的年份同比最大降幅不到4%,2019年数据相对2018年为上涨,均不满足5%的筛选阈值。

内容的提问来源于stack exchange,提问作者QWERTY_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 05:33:28