2026a

# cumprod


累计乘积

# 语法

B = cumprod(A)
B = cumprod(A, dims=dim)

# 说明

B = cumprod(A) 返回向量元素的累积乘积。示例


B = cumprod(A, dims=dim) 返回沿维度 dim 的累积乘积。关键字参数 dims 不可省略。例如,如果 A 是矩阵,则 cumprod(A, dims=2) 返回每行的累积乘积。示例

# 示例

向量的累计乘积

计算从 1 到 5 的整数的累积乘积。元素 B[2] 是 A[1] 和 A[2] 的乘积,而 B[5] 是元素 A[1] 至 A[5] 的乘积。

A = 1:5
B = cumprod(A)
5-element Vector{Int64}:
1
2
6
24
120
矩阵中按维度累计乘积

定义其元素与其线性索引对应的 3×3 矩阵。

A = [1 4 7; 2 5 8; 3 6 9]
3×3 Matrix{Int64}:
1     4     7
2     5     8
3     6     9

计算 A 的列的累积乘积。元素 B[5] 是 A[4] 和 A[5] 的乘积,而 B[9] 是 A[7]、A[8] 和 A[9] 的乘积。

B = cumprod(A, dims = 1)
3×3 Matrix{Int64}:
1      4      7
2     20     56
6    120    504

计算 A 的行的累积乘积。

B = cumprod(A, dims = 2)
B = 3×3 Matrix{Int64}:
1     4     28
2    10     80
3    18    162
矩阵中每行的累计乘积

定义其元素与其线性索引对应的 2×3 矩阵。

A = [1 3 5; 2 4 6]
A = 2×3 Matrix{Int64}:
1  3  5
2  4  6

计算 A 的行的累积乘积。元素 B[3] 是 A[1] 和 A[3] 的乘积,而 B[5] 是 A[1]、A[3] 和 A[5] 的乘积。

B = cumprod(A, dims = 2)
B = 2×3 Matrix{Int64}:
1  3  15
2  8  48
乘积包含 NaN

若输入数组中含有 NaN,则从第一个NaN出现之后累计乘积计算结果为 NaN。

A = [1 3 2 4 NaN 3 NaN 2];
B = cumprod(A, dims=2)
B = 1×8 Matrix{Float64}:
1.0  3.0  6.0  24.0  NaN  NaN  NaN  NaN
对累积乘积求反

生成一个 3x3 的随机整数矩阵,每个元素的值在 1 到 10 之间。

using TyMath
rng = MT19937ar(5489)
A = randi(rng, (1, 10), 3, 3)
3×3 Matrix{Int64}:
  9  10   3
 10   7   6
  2   1  10

计算 A 的列的累积乘积。

B = cumprod(A, dims=1)
B = 3×3 Matrix{Int64}:
   9  10    3
  90  70   18
 180  70  180

反转累积乘积矩阵 B。

B = reverse(B, dims=1)
B = 3×3 Matrix{Int64}:
 180  70  180
  90  70   18
   9  10    3

# 输入参数

A - 输入数组
标量 | 元组 | 向量 | 矩阵 | 多维数组

输入数组,指定为标量、元组、向量、矩阵、多维数组。

数据类型: Int | Float | Bool

复数支持:

dims - 沿其运算的维度
正整数标量

沿其运算的维度,指定为正整数标量。当输入为矩阵或多维数组(n>2)时必须指定维度 dims。

以一个二维输入数组 A 为例:

  • cumprod(A, dims = 1) 对 A 的列中的连续元素进行累积求积;
  • cumprod(A, dims = 2) 对 A 的行中的连续元素进行累积求积。

如果 dim 大于 ndims(A),则 cumprod 返回 A。

# 另请参阅

* | .* | prod