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中使用HTMLParser解析HTML的教程
Apr 29 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
python数值基础知识浅析
Nov 19 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
Python换行与不换行的输出实例
Feb 19 Python
Python selenium的这三种等待方式一定要会!
Jun 10 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
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
python 提取文件的小程序
2009/07/29 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python中datetime常用时间处理方法
2015/06/15 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
20年同学聚会邀请函
2014/02/04 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
2014年党委工作总结
2014/11/22 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
SQL Server 中的事务介绍
2022/05/20 SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server