这个专栏名为《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),该参数的具体含义,可参考下图: