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 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
Python2中的raw_input() 与 input()
Jun 12 Python
详解Python中的静态方法与类成员方法
Feb 28 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
Python编程中类与类的关系详解
Aug 08 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python 带时区的日期格式化操作
Oct 23 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
分享8个Laravel模型时间戳使用技巧小结
2020/02/12 PHP
jquery鼠标停止移动事件
2013/12/21 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python里隐藏的“禅”
2014/06/16 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
python中的对数log函数表示及用法
2020/12/09 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
空指针到底是什么
2012/08/07 面试题
应聘编辑职位自荐信范文
2014/01/05 职场文书
工程招投标邀请书
2014/01/30 职场文书
北体毕业生求职信
2014/02/28 职场文书
合作意向书范本
2014/03/31 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
滴水洞导游词
2015/02/10 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL