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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
Python中文件遍历的两种方法
Jun 16 Python
Python进程通信之匿名管道实例讲解
Apr 11 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
python实现对变位词的判断方法
Apr 05 Python
Python接口测试文件上传实例解析
May 22 Python
python 模块导入问题汇总
Feb 01 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相对当前文件include其它文件的方法
2015/03/13 PHP
php查看当前Session的ID实例
2015/03/16 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
Vue性能优化的方法
2020/07/30 Javascript
Python对象体系深入分析
2014/10/28 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
可靠的数据流传输TCP
2016/03/15 面试题
环保倡议书100字
2014/05/15 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2014年工商所工作总结
2014/12/09 职场文书
会计工作总结范文2014
2014/12/23 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python