当前位置: 首页 > news >正文

Numpy从入门到精通——节省内存|通用函数

这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《Numpy从入门到精通——节省内存|通用函数

在这里插入图片描述

文章目录

  • 一、节省内存
    • 2.1使用X=X+Y与X+=Y的区别
    • 2.2 X=X+Y与 X[:] = X+Y
  • 二、通用函数

一、节省内存

在机器学习中,常常会涉及到大量的数据处理,尤其在深度学习、机器学习中,参数越多,数据量也就越大。怎么样高效地保存、更新这些参数,将直接影响内存的使用,限免我们通过代码详细介绍几种节省内存的简单方法。

2.1使用X=X+Y与X+=Y的区别

在python语法中,x=x+y与x+=y的含义是一样的,都是在原有的x基础上加了个y,再赋值给x。但是从内存开销的角度来看,则是完全不一样的,我们可以通过id(X)来进行说明,id函数可以提高内存中引用对象的确切地址,下面我们通过实际的代码来进行讲解:
首先我们看X=X+Y

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_32.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/24 16:33 
"""
import numpy as np
Y = np.random.randn(10,2,3)
X=np.zeros_like(Y)
print(id(X))
X=X+Y
print(id(X))

输出为:

2291830693584
2291830728432

X在运行X=X+Y前后id不同,说明指向不同内存区域。
然后我们看X+=Y:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_33.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/24 16:35 
"""
import numpy as np
Y = np.random.randn(10,2,3)
X=np.zeros_like(Y)
print(id(X))
X+=Y
print(id(X))

输出为:

1723763400400
1723763400400

X在运行X+=Y前后id相同,说明指向一个内存区域,由此说明X+=Y更能够节省空间。

2.2 X=X+Y与 X[:] = X+Y

我们直接看代码:
首先是X=X+Y

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_34.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/24 16:38 
"""
import numpy as np
Y = np.random.randn(10,2,3)
X=np.zeros_like(Y)
print(id(X))
X=X+Y
print(id(X))

输出为:

1581693935312
1581693974256

X在运行X=X+Y前后id不同,说明指向不同内存区域。
接下来我们看X[:] = X+Y:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_35.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/24 16:39 
"""
import numpy as np
Y = np.random.randn(10,2,3)
X=np.zeros_like(Y)
print(id(X))
X[:]=X+Y
print(id(X))

输出为:

1769016729296
1769016729296

X在运行X[:]=X+Y前后id相同,说明指向一个内存区域,由此说明x[:] = x+y 更节省空间!

二、通用函数

在之前的学习中,我们已经介绍了很多特定的函数,但是numpy中的函数还有很多没有介绍。numpy中与两个基本对象,ndarray和ufunc,前面主要介绍了ndarray,下面介绍ufunc。很多ufunc底层都是C写的,所以运行速度非常快,下面用一个表格列举Numpy中的几个常见的通用函数。

函数使用方法
sqrt计算序列化数据的平方根
sin、cos三角函数
abs计算序列化数据的绝对值
log、log10、log2对数函数
exp指数函数
cumsum、cumproduct累计求和、求积
sum对一个序列化数据进行求和
mean计算均值
median计算中位数
std计算标准差
var计算方差
corrcoef计算相关系数

说明:
np.max,np.sum,np.min等函数中,都涉及一个有关轴的参数(即axis),该参数的具体含义,可参考下图:

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/62620.html

相关文章:

  • Docker-compose 启动 lnmp 开发环境
  • 《android源码阅读四》Android系统源码整编、单编并运行到虚拟机
  • 深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练
  • 【笔试】备战秋招,每日一题|20230415携程研发岗笔试
  • 【unity专题篇】—GUI(IMGUI)思维导图详解
  • 【C++ Metaprogramming】0. 在C++中实现类似C#的泛型类
  • TDA4VM/VH 芯片 NAVSS0
  • 基于springboot的前后端分离的案列(一)
  • Docker网络模式详解
  • PXE高效批量网络装机
  • YOLOv5+双目实现三维跟踪(python)
  • ESP8266使用SDK软硬件定时执行函数
  • ThreadPoolExecutor源码阅读流程图
  • 如何通过筛选高质量爬虫IP提升爬虫效率?
  • C#中定义数组--字符串及数组操作
  • 嵌入式就业怎么样?
  • 用户订阅付费如何拆解分析?看这篇就够了
  • 智能合约中如何调用其他智能合约
  • python的多任务处理
  • Vue收集表单数据学习笔记
  • Linux搭建GitLab私有仓库,并内网穿透实现公网访问
  • SpringBoot项目防重复提交注解开发
  • 从软件哲学角度谈 Amazon SageMaker
  • C++内联函数
  • JAVA大师的秘籍:轻松掌握高质量代码之道
  • OpenGL入门教程之 变换
  • ASPICE详细介绍-4.车载项目为什么要符合ASPICE标准?
  • 一文彻底理解Java 17中的新特性密封类
  • 【Git 入门教程】第四节、Git冲突:如何解决版本控制的矛盾
  • c++验证用户输入合法性的示例代码