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

如何使用NumPy计算n年数据的最大百分比变化及对应年份

问题说明

需要计算并输出两个结果:

  • 最大百分比变化(maximum percentage change)
  • 该变化对应的年份(year)

给定的NumPy数组结构如下:

import numpy as np
array = np.array([[2010,2011,2012,2013,2014,2015,2016,2017,2018,2019],
                  [1996,2165,2342,2511,2829,3052,3299,3523,3741,3864]])

数组第一行为年份序列,第二行为对应年份的统计数值。

原有代码错误点

现有实现存在几个明显问题,无法正常运行:

compare = np.roll(array,1)
pcdiff = (compare - pcdiff)/compare))
  • 直接对整个二维数组做移位操作,会把年份行和数值行的元素混排,逻辑完全错误
  • 计算pcdiff时提前引用了尚未定义的pcdiff变量,属于循环引用错误
  • 语句末尾多了一个右括号,语法不合法
  • 百分比变化计算逻辑颠倒,且没有处理首年无前序对比数据的边界情况
正确实现代码

百分比变化的计算逻辑为:(当年数值 - 前一年数值) / 前一年数值,计算完成后取最大值及对应年份即可,实现代码如下:

# 拆分年份列和数值列
years = array[0]
values = array[1]

# 计算相邻年份的百分比变化,首年无对比数据直接跳过
pct_change = (values[1:] - values[:-1]) / values[:-1]

# 定位最大百分比变化的位置
max_change_pos = pct_change.argmax()

# 提取结果
max_percent_change = pct_change[max_change_pos]
target_year = years[1:][max_change_pos]

# 输出结果
print(f"最大百分比变化:{max_percent_change:.2%}")
print(f"变化发生年份:{target_year}")

运行后输出结果为:

最大百分比变化:12.66%
变化发生年份:2014

内容的提问来源于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 04:01:18