python数据分析numpy基础之sum用法和示例

1 python数据分析numpy基础之sum用法和示例

python的numpy库的sum()函数,用于对数组指定轴的元素求和。

用法

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)

描述

入参a可以为数组或类数组(元组,列表)。如果axis没有传则对全部元素求和。

入参

a:必选,array_like,需要求和的数组,或者列表、元组。

axis:可选,整数,或整数元组。表示要求和轴,默认为None,表示对全部元素求和。

dtype:可选,表示求和后数组的类型,或标量的类型。

1.1 入参a

numpy.sum()的入参a为必选入参,表示要求和的元素,可以为数组、列表、元组。

>>> import numpy as np
# np.sum的第1个入参a表示要求和的数组、列表、元组
# a可以为列表
>>> np.sum([0.5, 1.5])
2.0
# a可以为元组
>>> np.sum((0.5, 1.5))
2.0
# a可以为数组
>>> np.sum(np.array([0.5,1.5]))
2.0

1.2 入参axis为整数

numpy.sum()的入参axis为可选入参,表示根据指定维度对同维度同方向的元素求和,可以为整数或整数元组。

入参axis默认为None,表示对sum的入参a的全部元素求和。

入参axis为整数时,对同维度同方向的元素求和,多个方向同维度的元素后组成数组。

比如,三维数组大小为(2,3,4),则0轴同维度同方向的元素有2个,为2个大小为(3,4)的二维数组,所以相加后为大小为(3,4)的二维数组。

1轴同维度同方向的元素有3个,为3个大小为4的一维数组,所以同方向的元素相加后为一维数组,大小为4;另一个方向的同维度同方向的元素相加后为一维数组,大小为4;1轴同维度不同方向的元素有2个,最终1轴同维度同方向的元素相加后组成有2个一维数组的二维数组,大小为(2,4)。

2轴为一为数组,同维度同方向的元素为标量,共有4个,同维度同方向的标量相加后为标量,2轴在1轴上有3个不同方向的一维数组,3个不同方向的标量和组成一维数组,1轴在0轴上有2个不同方向的元素,这2个不同方向的2轴元素和为2个一维数组,组成2个元素为一维数组的二维数组,最终2轴同维度同方向的元素相加后组成(2,3)的二维数组。

>>> import numpy as np
# 创建一个三维数组,0,1,2轴的大小分别为2,3,4
# 0轴为三维数组,由1轴的二维数组组成
# 1轴为二维数组,由2轴的一维数组组成
# 2轴为一维数组,由标量组成
>>> ar3=np.arange(24).reshape(2,3,4)
>>> ar3
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]])
# axis=None,默认值,表示对全部元素求和
>>> np.sum(ar3)
276
>>> np.sum(ar3,axis=0)
array([[12, 14, 16, 18],[20, 22, 24, 26],[28, 30, 32, 34]])
# ar3的0轴同方向有2个二维数组,ar3[0]和ar3[1]
# np.sum(ar3,axis=0)=ar3[0]+ar3[1]
>>> ar30=ar3[0]+ar3[1]
>>> ar30
array([[12, 14, 16, 18],[20, 22, 24, 26],[28, 30, 32, 34]])      
>>> np.sum(ar3,axis=1)
array([[12, 15, 18, 21],[48, 51, 54, 57]])
# ar3的1轴有两个方向,ar3[0]和ar3[1]
# ar3[0]或ar3[1]同方向有3个一维数组
# ar3[0]:ar3[0,0],ar3[0,1],ar3[0,2]
# ar3[1]:ar3[0,0],ar3[0,1],ar3[0,2]
# np.sum(ar3,axis=1)=np.array([ar300,ar301])
>>> ar310=ar3[0,0]+ar3[0,1]+ar3[0,2]
>>> ar311=ar3[1,0]+ar3[1,1]+ar3[1,2]
# ar3的1轴2个方向的和,组成数组
>>> np.array([ar310,ar311])
array([[12, 15, 18, 21],[48, 51, 54, 57]])
>>> np.sum(ar3,axis=2)
array([[ 6, 22, 38],[54, 70, 86]])
# ar3的2轴为一维数组有4个标量,
# ar3的1轴有3个不同方向的2轴元素,
# ar3的0轴有2个不同方向的1轴元素,
# ar3总共有2*3=6个不同方向的2轴一维数组
# 1轴的3个方向(3个一维数组)各自的和组成一维数组
# 0轴有2个方向各自的和组成一维数组
# np.sum(ar3,axis=2)=np.array([ar3210,ar3211])
>>> ar3210=[np.sum(ar3[0,0]),np.sum(ar3[0,1]),np.sum(ar3[0,2])]
>>> ar3211=[np.sum(ar3[1,0]),np.sum(ar3[1,1]),np.sum(ar3[1,2])]
>>> np.array([ar3210,ar3211])
array([[ 6, 22, 38],[54, 70, 86]])
# axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推   
>>> np.sum(ar3,axis=-1)
array([[ 6, 22, 38],[54, 70, 86]])

1.3 入参axis为整数元组

numpy.sum()的入参axis为整数元组时,表示依次对不同轴上的元素求和,并且axis=(m,n)等于axis=(n,m)。

比如axis=(0,1),先对0轴求和,再对1轴求和。

>>> import numpy as np
>>> ar3=np.arange(24).reshape(2,3,4)
>>> ar3
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]])
# axis=(0,1),先对0轴同轴求和,再对1轴同轴求和
# 0轴求和后有3个一维数组,再将1轴的一维数组相加求和
>>> np.sum(ar3,axis=(0,1))
array([60, 66, 72, 78])
# ar3的0轴求和:2个同轴元素求和:ar3[0]+ar3[1]
>>> ar30=ar3[0]+ar3[1]
>>> ar30
array([[12, 14, 16, 18],[20, 22, 24, 26],[28, 30, 32, 34]])
# axis=(0,1)等于axis=(1,0)
>>> np.sum(ar3,axis=(1,0))
array([60, 66, 72, 78])
# 0轴求和后有3个一维数组,再对2轴的标量求和
>>> np.sum(ar3,axis=(0,2))
array([ 60,  92, 124])
# 1轴求和后有2个一维数组,再对2轴的标量求和
>>> np.sum(ar3,axis=(1,2))
array([ 66, 210])

1.4 入参dtype

numpy.sum()的入参dtype为可选入参,求和后的数组类型或求和后的标量类型。

>>> import numpy as np
# 创建一个三维数组,0,1,2轴的大小分别为2,3,4
>>> ar3=np.arange(24).reshape(2,3,4)
>>> ar3
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]])
# dtype指定求和后的数组类型或标量类型
>>> np.sum(ar3,axis=0,dtype=np.float32)
array([[12., 14., 16., 18.],[20., 22., 24., 26.],[28., 30., 32., 34.]], dtype=float32)
>>> np.sum([1,2,3])
6
>>> np.sum([1,2,3],dtype=np.int32)
6
>>> np.sum([1,2,3],dtype=np.float32)
6.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java8-使用流-2

筛选各异的元素 流还支持一个叫作aistinct的方法&#xff0c;它会返回一个元素各异(根据流所生成元素的hashcode和eguals方法实现)的流。例如&#xff0c;以下代码会筛选出列表中所有的偶数&#xff0c;并确保没有重复。图5-2直观地显示了这个过程。 List<Integer>number…

Panalog 日志审计系统 sessiptbl.php 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 sessiptbl.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 影响范围 version <= MARS r10p1Free 0x04 复现…

勒索病毒最新变种.faust勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 随着我们进入数字化时代&#xff0c;数据的重要性变得愈发显著&#xff0c;而网络安全威胁也日益增加。.faust勒索病毒是其中一种备受恶意分子钟爱的危险工具&#xff0c;它通过加密用户文件并勒索高额赎金来对个人和组织发起攻击。本文将深入探讨.faust勒索…

thinkphp+vue企业产品展示网站f7enu

本文首先介绍了企业产品展示网站管理技术的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&#…

紫微斗数双星组合:廉贞破军在卯酉

文章目录 前言内容总结 前言 紫微斗数双星组合&#xff1a;廉贞破军在卯酉 内容 紫微斗数双星组合&#xff1a;廉贞破军在卯酉 性格分析 廉贞星、破军星二星同宫&#xff0c;具有冒险开创的精神和领导能力&#xff0c;忍耐力强&#xff0c;工作积极稳重&#xff0c;冲劲大&a…

FreeSWITCH在session上执行定时挂机与取消

一、实验场景环境描述 FreeSWITCH测试机&#xff1a;192.168.137.32 会议室&#xff1a; test1 分机&#xff1a; 1000 模拟的场景&#xff1a; 1&#xff09;会议室test1邀请分机1000加入会议室 在邀请时&#xff0c;添加定时挂机任务。 2&#xff09;分机1000接通后&#x…

【51单片机】利用STC-ISP软件工具【定时器计算器】配置【定时器】教程(详细图示)(AT89C52)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

Shell脚本——提取目录名和文件名

目录 一、${} 1.${var##*/} 2.${var##*.} 3.${var#*.} 4.${var%/*} 5.${var%%.*} 6.总结 二、basename和dirname 1.basename 2.dirname 在许多场景下&#xff0c;我们都需要对文件名称或者文件所在的目录进行操作&#xff0c;已达到我们业务目的。通常的操作是由路径…

Python入门知识点分享——(二十一)多继承和运算符重载

在介绍新的知识之前&#xff0c;我们先对之前的内容做一点补充&#xff0c;在面向对象编程的过程中&#xff0c;一个对象常常被要求具备多方面的功能&#xff0c;从而和多个类产生联系&#xff0c;而这一步的实现就用到了“多继承”。多继承是指一个子类可以继承自多个父类&…

QGIS教程 加载shape数据 矢量数据(批量)

一. 前言 本篇文章主要介绍QGIS的使用&#xff0c;包括如何加载矢量shape数据、查看数据属性、如何加载txt属性数据、怎么用脚本批量加载矢量数据等内容。 如果想了解QGIS&#xff0c;可以参考博文&#xff1a; QGIS基本介绍 如果想了解shape数据格式详情&#xff0c;可以参考…

CVE-2023-41892 漏洞复现

CVE-2023-41892 开题&#xff0c;是一个RCE Thanks for installing Craft CMS! You’re looking at the index.twig template file located in your templates/ folder. Once you’re ready to start building out your site’s front end, you can replace this with someth…

leetcode刷题--贪心算法

七. 贪心算法 文章目录 七. 贪心算法1. 605 种花问题2. 121 买卖股票的最佳时机3. 561 数组拆分4. 455 分发饼干5. 575 分糖果6. 135 分发糖果7. 409 最长回文串8. 621 任务调度器9. 179 最大数10. 56 合并区间11. 57 插入区间13. 452 用最少数量的箭引爆气球14. 435 无重叠区间…

设备驱动开发_1

可加载模块如何工作的 主要内容 描述可加载模块优势使用模块命令效率使用和定义模块密钥和模块工作1 描述可加载模块优势 开发周期优势: 静态模块在/boot下的vmlinuz中,需要配置、编译、重启。 开发周期长。 LKM 不需要重启。 开发周期优于静态模块。 2 使用模块命令效率…

【AIGC】Stable Diffusion的ControlNet插件

ControlNet 介绍 ControlNet 插件是 Stable Diffusion 中的一个重要组件&#xff0c;用于提供对模型的控制和调整。以下是 ControlNet 插件的主要特点和功能&#xff1a; 模型控制&#xff1a; ControlNet 允许用户对 Stable Diffusion 中的模型进行精细的控制和调整。用户可以…

应急响应实战笔记01入侵排查篇(2)

第2篇&#xff1a;Linux 入侵排查 0x00 前言 当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时&#xff0c;急需第一时间进行处理&#xff0c;使企业的网络信息系统在最短时间内恢复正常工作&#xff0c;进一步查找入侵来源&#xff0c;还原入侵事故过程&…

[GXYCTF2019]禁止套娃

进来发现只有这句话&#xff0c;习惯性访问一下flag.php&#xff0c;发现不是404&#xff0c;那就证明flag就在这了&#xff0c;接下来要想办法拿到flag.php的源码。 这道题是.git文件泄露网页源码&#xff0c;githack拿到index.php源码 这里观察到多次判断&#xff0c;首先要…

电脑监控屏幕软件有哪些(监控电脑屏幕的软件)

随着信息技术的迅猛发展&#xff0c;电脑屏幕监控软件已成为企业、家庭以及教育机构保护数据安全、提升工作效率以及进行行为分析的重要工具。本文将详细介绍几款主流的电脑屏幕监控软件&#xff0c;包括它们的功能、特点以及适用场景&#xff0c;帮助读者更好地了解并选择合适…

Flink理论—容错之状态后端(State Backends)

Flink理论—容错之状态后端(State Backends) Flink 使用流重放和 检查点的组合来实现容错。检查点标记每个输入流中的特定点以及每个运算符的相应状态。通过恢复运算符的状态并从检查点点重放记录&#xff0c;可以从检查点恢复流数据流&#xff0c;同时保持一致性 容错机制不…

python数据分析numpy基础之where三元表达式的矢量化

1 python数据分析numpy基础之where三元表达式的矢量化 python的numpy库的where()函数返回满足条件的索引值&#xff0c;或者返回满足条件和不满足条件的元素值。 用法 numpy.where(condition, [x, y], /)描述 如果x和y没传&#xff0c;则返回满足条件condition的索引值组成…

几道简单的题目练一下手感

第 1 题 【 问答题 】 • 找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&a…