手机网站拦截怎么解除建筑设计学校排名
这个专栏名为《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),该参数的具体含义,可参考下图:


