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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
python调用fortran模块
Apr 08 Python
详解如何使用Python编写vim插件
Nov 28 Python
Python用for循环实现九九乘法表
May 31 Python
python实现画一颗树和一片森林
Jun 25 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
Python图片检索之以图搜图
May 31 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 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
php 保留字列表
2012/10/04 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
JS实现密码框效果
2020/09/10 Javascript
python的id()函数解密过程
2012/12/25 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
解读python logging模块的使用方法
2018/04/17 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
机电一体化职业规划书
2014/01/07 职场文书
网络技术专业求职信
2014/05/02 职场文书
健康教育评估方案
2014/05/25 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏