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备份Mysql脚本
Aug 11 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
Python实现中一次读取多个值的方法
Apr 22 Python
详解windows python3.7安装numpy问题的解决方法
Aug 13 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 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
通过html表格发电子邮件
2006/10/09 PHP
使用php清除bom示例
2014/03/03 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
微信支付开发告警通知实例
2016/07/12 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python二叉树的实现实例
2013/11/21 Python
python多进程共享变量
2016/04/06 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
群胜软件Java笔试题
2012/09/29 面试题
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android