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