2026a

# sum


数组求和

函数库: TyMath

# 语法

S = sum(A)
S = sum(A, dims=dim)
S = sum(A, init=a)
S = sum(f, A)

# 说明

S = sum(A) 用于求数组元素之和。示例


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


S = sum(A, init=a) 指定初始求和元素为 a,关键字参数 init 不可省略。示例


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

# 示例

数组元素的总和

创建一个向量并计算各个元素的总和。

A = collect(1:10)
S = sum(A)
S = 55

创建一个矩阵并计算元素的总和。

A = [1 3 2;4 2 5;6 1 4]
A = 3×3 Matrix{Int64}:
1      3      2
4      2      5
6      1      4
S = sum(A)
S = 28
矩阵列总和

创建一个矩阵并计算每列中元素的总和。

A = [1 3 2;4 2 5;6 1 4]
A = 3×3 Matrix{Int64}:
1      3      2
4      2      5
6      1      4
S = sum(A, dims = 1)
S = 1×3 Matrix{Int64}:
11  6  11
矩阵行总和

创建一个矩阵并计算每行中元素的总和。

A = [1 3 2;4 2 5;6 1 4]
A = 3×3 Matrix{Int64}:
1      3      2
4      2      5
6      1      4
S = sum(A, dims = 2)
S = 3×1 Matrix{Int64}:
6
11
11
数组切片总和

使用向量维度参数来操作数组的特定切片。

创建所有元素为 1 的三维数组。

A = ones(4,3,2)

要对 A 的每个页中的所有元素求和,请使用向量维度参数指定要求和的维度(行和列)。两个页均为 4×3 的全 1 矩阵,因此每页的总和为 12。

S1 = sum(A, dims = [1 2])
S1 = 1×1×2 Array{Float64, 3}:
[:, :, 1] =
12.0
[:, :, 2] =
12.0

如果沿第一个维度对 A 进行切片,则可以对得到的 4 个页的元素求和,每个页为 3×2 矩阵。

S2 = sum(A, dims = [2 3])
S2 = 4×1×1 Array{Float64, 3}:
[:, :, 1] =
6.0
6.0
6.0
6.0

沿第二个维度切片,每个页的总和是一个 4×2 矩阵的元素之和。

S3 = sum(A, dims = [1 3])
S3 = 1×3×1 Array{Float64, 3}:
[:, :, 1] =
8.0  8.0  8.0
三维数组的总和

创建一个由 1 值组成的 4×2×3 数组,并计算沿第三个维度的总和。

A = ones(4,2,3)
S = sum(A, dims = 3)
S = 4×2×1 Array{Float64, 3}:
[:, :, 1] =
3.0  3.0
3.0  3.0
3.0  3.0
3.0  3.0
设置初始求和元素
sum(1:10, init = 0+0im)
ans = 55 + 0im
sum(1:10, init = 1+0im)
ans = 56 + 0im
调用函数并求和

求向量元素的平方和。

sum(abs2, [2, 3, 4])
ans = 29
32 位整数之和

创建一个由 32 位整数组成的向量,并将结果转化为 Int32 类型。

A = collect(Int32, 1:10)
S = Int32(sum(A))
S = 55
总和,不包括 NaN

创建一个向量并计算其总和,不包括 NaN 值。

A = [1.77, -0.005, 3.98, -2.95, NaN, 0.34, NaN, 0.19]
S = sum(filter(!isnan, A))
S = 3.3249999999999997

# 输入参数

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

数据类型: Int | Float

复数支持:

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

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

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

  • sum(A,dims = 1) 对 A 的列中的连续元素进行求和并返回一个包含每列之和的 1×n 矩阵。
  • sum(A,dims = 2) 对 A 的行中的连续元素进行求和并返回一个包含每行累积和的 n×1 矩阵。

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

init - 初始值
标量

初始求和元素,指定为标量。

数据类型: Int | Float

复数支持:

f - 元素处理规则
函数

元素处理规则,指定为函数。对数组中元素进行处理后再用 sum 函数进行元素求和。

# 另请参阅

+ | cumsum | diff | prod