2026a

# prod


元素乘积

函数库: TyMath

# 语法

B = prod(A)
B = prod(A, dims=dim)
B = prod(A, init=a)
B = prod(f, A)

# 说明

B = prod(A) 返回 A 的所有元素的乘积。示例


B = prod(A, dims=dim) 可指定对数组的某一维度 dim 进行求积,关键字参数 dims 不可省略,例如对二维矩阵列进行求积:prod(A, dims=1)。示例


B = prod(A, init=a) 指定求乘积的初始元素为 a,关键字参数 init 不可省略。示例


B = prod(f, A) 对于数组 A 的每个元素调用函数 f 的结果进行求积。示例

# 示例

每列中元素的乘积

创建其元素与其线性索引对应的 3×3 数组。

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

计算每列中元素的乘积。

B = prod(A, dims = 1)
B = 1×3 Matrix{Int64}:
6  120  504
逻辑输入的乘积

创建一个逻辑值数组。

A = [true false; true true]
A = 2×2 Matrix{Bool}:
1  0
1  1

计算每列中元素的乘积。

B = prod(A, dims = 1)
1×2 Matrix{Bool}:
1  0

每行中元素的乘积

创建其元素与其线性索引对应的 3×3 数组。

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

计算每行中元素的乘积,并将第二个维度的长度减少到 1。第一个维度的长度与 size(A,1) 匹配,第二个维度的长度为 1。

dim = 2;
B = prod(A, dims = dim)
B = 3×1 Matrix{Int64}:
28
80
162
数组页的乘积

创建一个三维数组并计算每页数据(行和列)的乘积。

A = zeros(2,2,3)
A[:,:,1] = [2 4; -2 1];
A[:,:,2] = [1 2; -5 3];
A[:,:,3] = [4 4; 1 -3];
B1 = prod(A,dims = [1,2])
B1 = 1×1×3 Array{Float64, 3}:
[:, :, 1] =
 -16.0
[:, :, 2] =
 -30.0
[:, :, 3] =
 -48.0

要计算一个数组的所有维度上的乘积,可以在关键字参数 dims 中指定每个维度,或不指定维度。

B2 = prod(A,dims = [1 2 3])
B2 = 1×1×1 Array{Float64, 3}:
[:, :, 1] =
 -23040.0
Ball = prod(A)
Ball = -23040.0
设置初始值

创建一个 3×3 的数组。

A = [12 15 18; 13 16 19; 14 17 20]
3×3 Matrix{Int64}:
 1200  1500  1800
 1300  1600  1900
 1400  1700  2000

计算每行中元素的乘积。

B = prod(A, dims=2)
B = 3×1 Matrix{Int64}:
 3240
 3952
 4760

将初始值设置为 2,再计算每行中元素的乘积。

B1 = prod(A, dims=2, init=2)
B2 = 3×1 Matrix{Int64}:
 6480
 7904
 9520

可知,B1 的每个元素是 B 的 2 倍。

调用函数并进行乘积

求向量元素平方的乘积。

sum(abs2, [2, 3, 4])
ans = 576

# 输入参数

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

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

数据类型: Int | Float

复数支持:

f - 元素处理规则
函数

元素处理规则,指定为函数。对数组中元素进行处理后再用 prod 函数进行元素乘积。

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

沿其运算的维度,指定为正整数标量或正整数向量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

维度 dims 表示长度减至 1 的维度。size(B, dims) 为 1,而所有其他维度的大小保持不变。

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

  • 如果 dims = 1,则 prod(A, dims=1) 返回包含每一列中元素的乘积的行;

  • 如果 dims = 2,则 prod(A, dims=2) 返回包含每一行中元素的乘积的列。

当 dims 大于 ndims(A) 时,prod 返回 A。

数据类型: Int | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 |

init - 初始值
标量

初始值,指定为标量。

数据类型: Int | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Complex

复数支持:

# 另请参阅

* | .* | cumprod | diff | sum