您的位置:

Python函数:实现累积求和功能的np.cumsum

一、np.cumsum的定义与语法

np.cumsum()是numpy库中的一个函数,表示对数组元素进行累加并存储结果。

语法如下:

numpy.cumsum(a, axis=None, dtype=None, out=None)

其中:

  • a:输入的数组
  • axis:指定沿着哪个轴进行累加。默认为None,即所有元素都相加
  • dtype:输出数组的类型
  • out:输出数组。如果未提供,则返回新的数组

二、np.cumsum的使用示例

下面我们来看一些具体的使用示例。

1、一维数组

对一维数组进行累加:

import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])
cum_sum = np.cumsum(arr1)
print(cum_sum)

结果为:

[ 1  3  6 10 15]

以上代码的执行过程为:

  • 定义一维数组arr1,包含5个元素
  • 使用np.cumsum()函数对该数组进行累加
  • 将累加结果赋值给变量cum_sum
  • 输出cum_sum,得到数组[1, 3, 6, 10, 15]

2、二维数组

对二维数组进行累加,默认对所有元素进行累加:

arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
cum_sum = np.cumsum(arr2)
print(cum_sum)

结果为:

[ 1  3  6 10 15 21 28 36 45]

以上代码的执行过程为:

  • 定义二维数组arr2,包含3行3列,共9个元素
  • 使用np.cumsum()函数对该数组进行累加
  • 将累加结果赋值给变量cum_sum
  • 输出cum_sum,得到数组[1, 3, 6, 10, 15, 21, 28, 36, 45]

对二维数组进行累加,沿着轴0进行:

cum_sum_axis0 = np.cumsum(arr2, axis=0)
print(cum_sum_axis0)

结果为:

[[ 1  2  3]
 [ 5  7  9]
 [12 15 18]]

以上代码的执行过程为:

  • 使用np.cumsum()函数对数组arr2进行累加,沿着轴0进行计算
  • 将累加结果赋值给变量cum_sum_axis0
  • 输出cum_sum_axis0,得到数组[[1, 2, 3], [5, 7, 9], [12, 15, 18]]

对二维数组进行累加,沿着轴1进行:

cum_sum_axis1 = np.cumsum(arr2, axis=1)
print(cum_sum_axis1)

结果为:

[[ 1  3  6]
 [ 4  9 15]
 [ 7 15 24]]

以上代码的执行过程为:

  • 使用np.cumsum()函数对数组arr2进行累加,沿着轴1进行计算
  • 将累加结果赋值给变量cum_sum_axis1
  • 输出cum_sum_axis1,得到数组[[1, 3, 6], [4, 9, 15], [7, 15, 24]]

3、3维数组

对一个3维数组进行累加:

arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
cum_sum = np.cumsum(arr3)
print(cum_sum)

结果为:

[ 1  3  6 10 15 21 28 36]

以上代码的执行过程为:

  • 定义一个3维数组,包含2个2行2列的矩阵,共8个元素
  • 使用np.cumsum()函数对该数组进行累加
  • 将累加结果赋值给变量cum_sum
  • 输出cum_sum,得到数组[1, 3, 6, 10, 15, 21, 28, 36]

三、np.cumsum的应用场景

np.cumsum()函数可以用于一些需要进行数据累加分析的场景。

1、欢迎姬余润的新同学报到!

姬余润最近加入了一家新公司,他想了解公司股票的历史涨跌情况。假设他在2019年1月1日以每股100元的价格买入了1000股公司股票,他想知道到目前为止自己的股票总价值是多少。

import numpy as np

# 假设股票价格分别为113元、130元、125元、140元、120元
price = np.array([113, 130, 125, 140, 120])
num_shares = 1000  # 假设买入1000股

cum_sum = np.cumsum(price)
value = num_shares * cum_sum[-1]  # 最后一天的股票价值

print("自购买以来总价值为:", value, "元")

结果为:

自购买以来总价值为: 132500.0 元

以上代码的执行过程为:

  • 定义数组price,包含5个元素,即公司股票的5个交易日收盘价
  • 使用np.cumsum()函数对price数组进行累加
  • 计算最后一个元素的值cum_sum[-1],表示股票捏的总价值
  • 计算股票总价值num_shares * cum_sum[-1]
  • 输出结果,得到自购买以来的公司股票总价值为132500.0元

2、语音识别中音频帧加和

在语音识别中,会将音频分为若干个音频帧,并对每个音频帧进行傅里叶变换、滤波等处理。由于音频帧之间叠加部分较多,因此常常需要对音频帧进行加和,以提升语音识别的准确性。

import numpy as np

# 假设读入10个音频帧
frames = np.random.randn(10, 512)
sum_frames = np.cumsum(frames, axis=0)

# 最终的音频帧
final_frame = sum_frames[-1]

# 语音识别
...

以上代码的执行过程为:

  • 定义一个10行512列的数组frames,表示10个音频帧的特征信息
  • 使用np.cumsum()函数对frames数组进行累加,沿着轴0进行计算
  • 获取累加结果的最后一行的值sum_frames[-1],表示所有音频帧累加成一个音频帧的结果
  • 对该音频帧进行语音识别的其他处理

总结

np.cumsum()是numpy库中的一个函数,用于对数组元素进行累加并存储结果。在数据分析、信号处理、语音识别等领域都有广泛的应用。熟练使用该函数,能够帮助我们更加高效地进行数据分析和信号处理。