当前位置:网站首页>NumPy学习笔记(六)——sum()函数
NumPy学习笔记(六)——sum()函数
2022-06-22 19:30:00 【ac不知深】
目录
一、前言
在元素(数组)累加的时候,可以使用此函数进行累加,非常方便
二、函数讲解
1、sum()函数
我们先来看一下全部的参数
sum(a, axis, dtype, out, keepdims, initial, where)
2、参数讲解
1)a
第一个参数是是传入/输入的数组元素
2)aixs(可选)
沿轴使用(可选填,默认为数组的展平成一维形式,即0,1,2,3,4…等)
- 如果是沿着0轴,则返回每一列最大值的索引
- 如果是沿着1轴,则返回每一行最大值的索引
- 如果axis为负数,则从最后一个轴到第一个轴进行相加
- 如果默认为None,则把输入的所有元素都加起来
aixs为0与1时的方向如图所示

上个代码小例子
import numpy as np
a = np.array([[1,2],
[3,4]])
b = np.sum(a,axis=0)
# 按列相加
## [4 6]
c = np.sum(a,axis=1)
# 按行相加
## [3 7]
d = np.sum(a)
# 默认把四个元素都加起来
## 10
3)dtype(可选)
默认为:numpy.float64
我们也可以进行修改
比如我们常用的dtype = numpy.int32
具体使用整数类型或者精度要根据情况来选择
比如有关年龄数据可以考虑都用int
有关购物消费数据可以考虑使用float
4)out(可选)
数组类型
这个参数比较难理解
英语比较好的读者可以先看原版开发手册,吃力的同学直接跳过

---------------------------------------分割线------------------------------------------------------------
我的理解:
就是调用N次sum函数,会创建N次数组(大小与输入a相同)进行输出结果
这样的做法缺点很明显:消耗大量内存。
那么开发者就定义了out参数,把你所有计算结果都写入out中
第二次调用sum函数,得到的结果会覆盖上一轮的out值
怕读者不是很理解来段代码就懂了
import numpy as np
a = np.array([[1,2],
[3,4]])
# out的形状要比a的形状要大
ao = np.zeros_like([2,2])
print(ao)
## a0=[0 0]
b = np.sum(a,axis=0,out=ao)
print(ao)
## ao=[4 6]
c = np.sum(a,axis=1,out=ao)
print(ao)
## ao=[3 7]
5)keepdims(可选)
布尔类型
简而言之就是
如果设置为True值,则缩小轴的尺寸保留为1,保存在维数中(结果为)
如果设置为False值,则不会保留这个1
直接上代码更好理解
import numpy as np
x = np.ones([2,8])
y = np.sum(x,axis=0,keepdims=True).shape
## 保持原有二维的形状(1, 8)
z = np.sum(x,axis=0,keepdims=False).shape
## 没有保持原先二维形状(8,)
6)initial(可选)
是个标量
会把这个标量也加入到累加结果中,相当于加了个bias(偏置)
z = np.sum(3,axis=0,initial=4)
## 7(3+4)
z = np.sum([1,2],initial=4)
## 7
z = np.sum([[1,2],[3,4]],axis=1,initial=4)
## [(1+2+4),(3+4+4)]
## [7,11]
z = np.sum([[1,2],[3,4]],axis=0,initial=4)
## [(1+3+4),(2+4+4)]
## [8,10]
7)where(可选)
布尔类型
如果为True值,则会正常的进行sum运算
如果非False值,则不会进行sum运算,从而赋值为0
print(np.sum([[0, 1], [np.nan, 5]], where=True, axis=1))
## [ 1. nan]
print(np.sum([[0, 1], [np.nan, 5]], where=True, axis=0))
## [nan 6.]
print(np.sum([[0, 1], [np.nan, 5]], where=False, axis=1))
## [0. 0.]
print(np.sum([[0, 1], [np.nan, 5]], where=False, axis=0))
## [0. 0.]
print(np.sum([[0, 1], [1, 5]], where=False, axis=1))
## [0 0]
print(np.sum([[0, 1], [1, 5]], where=False, axis=0))
## [0 0]
print(np.sum([[0, 1], [1, 5]], where=[True,False], axis=0))
## [1 0]
print(np.sum([[0, 1], [1, 5]], where=[False,True], axis=0))
## [0 6]
print(np.sum([[0, 1], [1, 5]], where=[True,False], axis=1))
## [0 1]
print(np.sum([[0, 1], [1, 5]], where=[False,True], axis=1))
## [1 5]
3、返回值
如果不设定axis的值,将会返回一个标量
如果axis=0/1,则返回与a相同形状的数组(具体看沿哪个轴相加)
注意
如果多次调用该函数,还是建议加上out参数,这样可以节省大量内存!!!!
边栏推荐
猜你喜欢

Teach you how to create SSM project structure in idea

智能計算之神經網絡(BP)介紹

Visualization of R language nutrient dataset

One picture decoding opencloudos community open day

字节跳动提出轻量级高效新型网络MoCoViT,在分类、检测等CV任务上性能优于GhostNet、MobileNetV3!...

Using qtest for data set test performance test GUI test

ROS from entry to mastery (VIII) common sensors and message data

Ribbon负载均衡

R 语言USArrests 数据集可视化

已解决:一個錶中可以有多個自增列嗎
随机推荐
什么?你居然不会微信分身
How to calculate yoy and mom in MySQL
He was in '98. I can't play with him
一张图解码 OpenCloudOS 社区开放日
已解决:一个表中可以有多个自增列吗
laravel+宝塔计划任务
Multi transactions in redis
Using qtest for data set test performance test GUI test
84-我对网传<52 条 SQL 语句性能优化策略>的一些看法
评估指标及代码实现(NDCG)
80-分页查询,不止写法
85-这些SQL调优小'技巧',你学废了吗?
【奇葩需求之记录对象不同的日志】
【513. 找树左下角的值】
R 语言nutrient数据集的可视化
From perceptron to transformer, a brief history of deep learning
LORA技术---LoRa信号从数据流变为LoRa扩频信号,再从射频信号通过解调变为数据
深度学习常用损失函数总览:基本形式、原理、特点
采用QTest进行数据集测试-性能测试-GUI测试
【文末送书】火遍全网的AI给老照片上色,这里有一份详细教程!