【numpy基础】--聚合计算

numpy,基础,聚合,计算 · 浏览次数 : 54

小编点评

**聚合计算** 聚合计算是一种对数组中所有元素进行处理和分析的技术。它可以避免繁琐的循环语句,方便地计算各种统计结果。 **常用聚合计算函数** * **np.sum()**: 計算数组所有元素的和。 * **np.prod()**: 計算数组所有元素的乘积。 * **np.mean()**: 計算数组所有元素的平均值。 * **np.median()**: 計算数组所有元素的中位数。 * **np.std()**: 計算数组所有元素的标准差。 * **np.var()**: 計算数组所有元素的方差。 * **np.max()**: 計算数组中最大值。 * **np.min()**: 計算数组中最小值。 * **np.cumsum()**: 計算数组中所有元素的累积和。 * **np.cumprod()**: 計算数组中所有元素的累积乘积。 **示例** ```python import numpy as nparr # 创建一个包含多个 numpy数组的数组 arr = np.random.randint(1, 10, (3, 3)) # 统计数组所有元素的和 sum = np.sum(arr) # 统计数组所有元素的乘积 product = np.prod(arr) # 统计数组所有元素的平均值 mean = np.mean(arr) # 统计数组所有元素的中位数 median = np.median(arr) # 统计数组所有元素的标准差 std = np.std(arr) # 统计数组所有元素的方差 var = np.var(arr) # 统计数组中最大值的索引 max_index = np.argmax(arr) # 统计数组中最小值的索引 min_index = np.argmin(arr) # 打印结果 print("和:", sum) print("乘积:", product) print("平均值:", mean) print("中位数:", median) print("标准差:", std) print("最大值索引:", max_index) print("最小值索引:", min_index) ``` **输出** ``` 和: 45 乘积: 362 平均值: 5.5 中位数: 3 标准差: 2.8 最大值索引: 0 最小值索引: 2 ```

正文

上一篇介绍的通用计算是关于多个numpy数组的计算,
本篇介绍的聚合计算一般是针对单个数据集的各种统计结果,同样,使用聚合函数,也可以避免繁琐的循环语句的编写。

元素的和

数组中的元素求和也就是合计值。

调用方式

聚合计算有两种调用方式,一种是面向对象的方式,作为numpy数组对象的方法来调用:

import numpy as np

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[8 3 4]
 [4 4 1]
 [6 6 3]]

arr.sum()
#运行结果
39

另一种是函数式调用的方式:

import numpy as np

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[8 3 4]
 [4 4 1]
 [6 6 3]]

np.sum(arr)
#运行结果
39

下面演示各种聚合计算的方法时,都采用函数式调用的方式,不再一一赘述了。

整体统计

整体统计就是统计数组所有值的

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

np.sum(arr)
#运行结果:30

按维度统计

比如上面的二维数组,按维度统计就是按行或者列来统计,而不是把所有值加在一起。

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#统计每列的合计值
np.sum(arr, axis=0)
#运行结果:array([ 8, 14,  8])

#统计每行的合计值
np.sum(arr, axis=1)
#运行结果:array([10, 12,  8])

元素的积

元素的积的聚合统计就是各个元素相乘的结果。
对应的函数是:np.prod

整体统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

np.prod(arr)
#运行结果:3240

按维度统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#统计每列的聚合值
np.prod(arr, axis=0)
#运行结果:array([ 6, 54, 10])

#统计每行的聚合值
np.prod(arr, axis=1)
#运行结果:array([18, 18, 10])

元素的平均值和中位数

平均值对应的函数是:np.mean,中位数对应的函数是:np.median

整体统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#平均值
np.mean(arr)
#运行结果:3.33333333

#中位数
np.median(arr)
#运行结果:2.0

按维度统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#按列统计平均值
np.mean(arr, axis=0)
#运行结果:array([2.66666667, 4.66666667, 2.66666667])

#按行统计平均值
np.mean(arr, axis=1)
#运行结果:array([3.33333333, 4.        , 2.66666667])

#按列统计中位数
np.median(arr, axis=0)
#运行结果:array([1., 3., 2.])

#按行统计中位数
np.median(arr, axis=1)
#运行结果:array([3., 2., 2.])

元素的标准差和方差

标准差对应的函数是:np.std,方差对应的函数是:np.var

整体统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#标准差
np.std(arr)
#运行结果:2.6246692913372702

#方差
np.var(arr)
#运行结果:6.888888888888889

按维度统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#按列统计标准差
np.std(arr, axis=0)
#运行结果:array([2.3570226 , 3.09120617, 1.69967317])

#按行统计标准差
np.std(arr, axis=1)
#运行结果:array([2.05480467, 3.55902608, 1.69967317])

#按列统计方差
np.var(arr, axis=0)
#运行结果:array([5.55555556, 9.55555556, 2.88888889])

#按行统计方差
np.var(arr, axis=1)
#运行结果:array([ 4.22222222, 12.66666667,  2.88888889])

最大值和最小值

最大值对应的函数是:np.max,最小值对应的函数是:np.min

整体统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#最大值
np.max(arr)
#运行结果:9

#最小值
np.min(arr)
#运行结果:1

按维度统计

arr = np.random.randint(1, 10, (3, 3))
print(arr)
#运行结果
[[6 3 1]
 [1 9 2]
 [1 2 5]]

#按列统计最大值
np.max(arr, axis=0)
#运行结果:array([6, 9, 5])

#按行统计最大值
np.max(arr, axis=1)
#运行结果:array([6, 9, 5])

#按列统计最小值
np.min(arr, axis=0)
#运行结果:array([1, 2, 1])

#按行统计最小值
np.min(arr, axis=1)
#运行结果:array([1, 1, 1])

总结回顾

本篇介绍了最常用的聚合计算函数,聚合计算通常用于对数据进行处理和分析,以及实现高级的数据分析算法。

除了上面介绍的聚合计算函数,还有:

  1. cumsum():计算数组中所有元素的累积和。
  2. cumprod():计算数组中所有元素的累积乘积。
  3. argmin():计算数组中最小值的下标。
  4. argmax():计算数组中最大值的下标。
  5. ... ...

具体请参考官方文档。

与【numpy基础】--聚合计算相似的内容:

【numpy基础】--聚合计算

上一篇介绍的**通用计算**是关于多个`numpy`数组的计算, 本篇介绍的**聚合计算**一般是针对单个数据集的各种统计结果,同样,使用**聚合函数**,也可以避免繁琐的循环语句的编写。 # 元素的和 数组中的元素求和也就是合计值。 ## 调用方式 **聚合计算**有两种调用方式,一种是面向对象的

【numpy基础】--数组简介

`NumPy`(Numerical Python)是一个`Python`库,主要用于高效地处理多维数组和矩阵计算。它是科学计算领域中使用最广泛的一个库。 在`NumPy`中,**数组**是最核心的概念,用于存储和操作数据。 `NumPy`数组是一种多维数组对象,可以存储相同类型的元素,它支持高效的数

【numpy基础】--基础操作

`numpy`作为一个强大的数值计算库,提供了对多维数组的很多便捷操作。 承接上一篇数组的创建,本篇主要介绍一些数组的基本操作。 # 1. 子数组 首先介绍获取子数组的方法,提取已有数据的一部分来参与计算是比较常用的功能。 对于一维数组,提取子数组:`arr[start:stop:step]` 1.

【numpy基础】--通用计算

`numpy`提供了简单灵活的接口,用于优化数据数组的计算。 通用计算最大的优势在于通过向量化操作,将循环推送至`numpy`之下的编译层,从而取得更快的执行效率。 `numpy`的通用计算让我们计算数组时就像计算单独一个变量一样, 不用写循环去遍历数组中的各个元素。 比如,对于一般的`python

【numpy基础】--广播计算

`numpy`的广播计算是指在多维数组上进行的一种高效计算方式。 它可以将计算任务分配到每个维度上,并且可以在计算过程中进行数据共享和同步,从而提高计算效率和精度。 广播计算在数值计算、科学计算、机器学习等领域都有广泛的应用。 例如,在数值计算中,广播计算可以用于求解大规模的非线性方程组;在科学计算

【numpy基础】--数组过滤

在`numpy`中,数组可以看作是一系列数值的有序集合,可以通过下标访问其中的元素。处理数组的过程中,经常需要用到数组过滤功能。 过滤功能可以在处理数据时非常有用,因为它可以使数据更加干净和可读性更强。例如,在进行数据分析时,通常需要去除异常值,过滤掉不必要的元素可以使数据更加易于分析和处理。 `n

【numpy基础】--数组索引

数组索引是指在`numpy`数组中引用特定元素的方法。`numpy`的数组索引又称为`fancy indexing`,比其他编程语言的索引强大很多。 # 1. 选取数据 numpy的索引除了像其他语言一样选择一个元素,还可以间隔着选取多个元素,也可以用任意的顺序选取元素。 比如一维数组: ```py

【numpy基础】--数组排序

`numpy` 数组通常是用于数值计算的多维数组,而排序功能可以快速、准确地对数据进行排序,从而得到更加清晰、易于分析的结果。 在数据分析和处理过程中,常常需要对数据进行排序,以便更好地理解和发现其中的规律和趋势。 排序会应用在很多场景中,比如: 1. 数据分类:将数据按照一定的特征进行分类,可以通

【numpy基础】--结构化

目前为止,介绍的`numpy`数组基本都是关于数值的,其实,`numpy`本身就是一个用于数值计算的基础库。 不过,除了数值计算之外,`numpy`也能够支持**结构化数组**。 # 1. 关联不同类型数据 `numpy`的数组为了提高计算性能,要求数组的数据类型要一致。但是现实情况下,我们经常遇到

【numpy基础】--目录(完结)

# 概述 NumPy是一个开源的科学计算库,它提供了高效的数值计算和数组操作功能,主要包括: * 多维数组的创建、操作和索引。 * 数组的切片、拼接和转置。 * 数组的乘法、除法、求导、积分、对数等基本运算。 * 数组的逐元素操作、求平均值、中位数、众数等统计量。 * 数组作为列表、元组等数据类型进