# prod
元素乘积
函数库: TyMath
# 语法
B = prod(A)
B = prod(A, dims=dim)
B = prod(A, init=a)
B = prod(f, 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
复数支持: 是