首页 > 其他分享 >【numpy基础】--聚合计算

【numpy基础】--聚合计算

时间:2023-06-26 11:55:06浏览次数:25  
标签:arr 聚合 结果 -- np array numpy 运行 axis

上一篇介绍的通用计算是关于多个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. ... ...

具体请参考官方文档。

标签:arr,聚合,结果,--,np,array,numpy,运行,axis
From: https://www.cnblogs.com/wang_yb/p/17505273.html

相关文章

  • 保证线程安全的10个小技巧
    前言对于从事后端开发的同学来说,线程安全问题是我们每天都需要考虑的问题。线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题。比如:变量a=0,线程1给该变量+1,线程2也给该变量+1。此时,线程3获取a的值有可能不是2,而是1。线程3这不......
  • NodeJS本地环境安装及设置
    背景作为一个后端,服务接口自然不在话下。分分钟给安装上百个接口。但是交互。。。postman,postman,,,,,可视化和交互上那简直真的就是都长这样:想搞个React前端页面。先使用一下单表的增删改查操作。用来操作数据库玩玩一、概念1、Node.js是什么?Node.js是一个开源和跨......
  • spring boot 编译打包时将自定义引入的.jar包依赖,全部打包进去
    发现自己引入的.jar包,在打包时,.jar包并不会打进去,导致报错。打包时打入自定义.jar包方法:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</a......
  • FileManage
    usingSqlSugar;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespacePT.Model{publicclassFileManage{[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]......
  • 代码随想录算法训练营第十七天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中
     654.最大二叉树 比较简单,直接上代码1TreeNode*constructMax_cursor(vector<int>&nums)2{3if(nums.size()==0)returnNULL;4//getMaxNum5intindex=0;6intmax_=INT_MIN;7for(inti=0;i<nums.size();i++)8......
  • python talib中文技术分析库
    ADChaikinA/D线ADOSCChaikinA/DOscillatorChaikin震荡指标---|---简介:将资金流动情况与价格行为相对比,检测市场中资金流入和流出的情况---|---计算公式:fastperiodA/D-slowperiodA/D研判:1、交易信号是背离:看涨背离做多,看跌背离做......
  • LLM-Blender:大语言模型排序融合框架
    随着Alpaca,Vicuna,Baize,Koala等诸多大型语言模型的问世,研究人员发现虽然一些模型比如Vicuna的整体的平均表现最优,但是针对每个单独的输入,其最优模型的分布实际上是非常分散的,比如最好的Vicuna也只在20%的任务里比其他模型有优势。有没有可能通过集成学习来综合诸多开源的「......
  • flask中添加路由的方式
    在Flask中,添加路由有两种方式:(一般情况下都是用第一种方式)方式一:常见的装饰器模式@app.route("/")defindex():return"HelloWorld"方式二:通过阅读装饰器模式添加路由的源码发现 defroute(self,rule,**options):"""Adecoratorthatisusedtoregistera......
  • Eve-NG 安装与配置
    Eve-NG安装与配置1下载进入EVE-NG官网,点击顶栏第二个选项DOWNLOAD进来后是这个样子找到FreeEVECommunityEditionVersionxxx这一栏,你此时的版本号可能和我不太一样,这没关系,可以看到他提供了两种下载项目,OVF包和ISO镜像OVF包:OVF包安装方式适合在安装Wi......
  • 11、默认路由(缺省路由)、浮动路由(主备路由)
    静态路由分析可看,管理员配置的路由条目比较多,当网络环境比较大时,路由条目就非常复杂,尤其是部署在企业出口的路由器,不可能明细化配置复杂的静态路由信息,一般在边界路由器配置默认路由,也是静态路由的一种方式。默认路由格式:【H3C】iproute-static0.0.0.00.0.0.0下一跳IP地址......