Python机器学习三大件之一numpy


Posted in Python onMay 10, 2021

一、前言

机器学习三大件:numpy, pandas, matplotlib

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。

Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

NumPy提供了一个N维数组类型ndarray

import numpy as np
score = np.array(
[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])

score

array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])

Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。

Python机器学习三大件之一numpy

从图中我们可以看出ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。
list ? 分离式存储,存储内容多样化
ndarray ? 一体式存储,存储类型必须一样
ndarray支持并行化运算(向量化运算)
ndarray底层是用C语言写的,效率更高,释放了GIL

二、基本操作

# 生成0和1的数组
ones = np.ones([4,8])
ones

array([[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.]])

# 生成等间隔的数组
np.linspace(0, 100, 11)

array([ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90.,
100.])

#创建等差数组 — 指定步长
np.arange(10, 50, 2)

array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48])

三、正太分布

  • rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
np.random.rand(4,2)

array([[ 0.02173903, 0.44376568],
[ 0.25309942, 0.85259262],
[ 0.56465709, 0.95135013],
[ 0.14145746, 0.55389458]])

  • randn函数返回一个或一组样本,具有标准正态分布
np.random.randn(2,4)

array([[ 0.27795239, -2.57882503, 0.3817649 , 1.42367345],
[-1.16724625, -0.22408299, 0.63006614, -0.41714538]])

  • randint返回随机整数,范围区间为[low,high),包含low,不包含high
np.random.randint(1,5) # 返回1个[1,5)时间的随机整数

4

  • 生成均匀分布的随机数,举例1:生成均值为1.75,标准差为1的正态分布数据,100000000个
x1 = np.random.normal(1.75, 1, 100000000)

array([2.90646763, 1.46737886, 2.21799024, …, 1.56047411, 1.87969135, 0.9028096 ])

  • 均匀分布
# 生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000)

array([ 0.22411206, 0.31414671, 0.85655613, …, -0.92972446, 0.95985223, 0.23197723])

四、数组的索引、切片

# 三维
a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
# 返回结果
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[12,  3, 34],
        [ 5,  6,  7]]])
# 索引、切片
a1[0, 0, 1]   # 输出: 2

五、形状修改

stock_change.reshape([5, 4])  #5*4
stock_change.reshape([-1,10])  #2*10,-1: 表示通过待计算

六、转置

stock_change.T.shape

七、类型转换

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
arr.tostring()

八、数组的去重

temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])

>>> np.unique(temp)
array([1, 2, 3, 4, 5, 6])

逻辑运算
直接进行大于,小于的判断:test_score > 60
合适之后,可以直接进行赋值:test_score[test_score > 60] = 1
通用判断函数
np.all() np.all(score[0:2, :] > 60)
np.any() np.any(score[0:2, :] > 80)
统计运算
np.max()
np.min()
np.median()
np.mean()
np.std()
np.var()
np.argmax(axis=) — 最大元素对应的下标
np.argmin(axis=) — 最小元素对应的下标

九、广播机制

  • 数组运算,满足广播机制,就OK

1.维度相等

2.shape(其中对应的地方为1,也是可以的)

arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)

arr2 = np.array([1,2,3])
arr2.shape
# (3,)

arr1+arr2
# 结果是:
array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])

到此这篇关于Python机器学习三大件之一numpy的文章就介绍到这了,更多相关python numpy内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
python 利用toapi库自动生成api
Oct 19 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 Python
python实现自动清理文件夹旧文件
May 10 #Python
Python中的min及返回最小值索引的操作
May 10 #Python
发工资啦!教你用Python实现邮箱自动群发工资条
在Django中使用MQTT的方法
May 10 #Python
十个Python自动化常用操作,即拿即用
May 10 #Python
Django开发RESTful API实现增删改查(入门级)
May 10 #Python
Python中X[:,0]和X[:,1]的用法
May 10 #Python
You might like
基于mysql的论坛(4)
2006/10/09 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python条件和循环的使用方法
2013/11/01 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
半年思想汇报
2013/12/30 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电