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的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python中每次处理一个字符的5种方法
May 21 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
python GUI实例学习
Nov 21 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
详解Python3 基本数据类型
Apr 19 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
Python实现屏幕录制功能的代码
Mar 02 Python
Django中和时区相关的安全问题详解
Oct 12 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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日历制作代码分享
2014/01/20 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
Python中scatter函数参数及用法详解
2017/11/08 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
python 串行执行和并行执行实例
2020/04/30 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
Shell如何接收变量输入
2012/09/24 面试题
社区道德讲堂实施方案
2014/03/21 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
责任担保书范文
2014/05/21 职场文书
健康状况证明书
2014/11/26 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
投资入股协议书
2016/03/22 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
Python 如何安装Selenium
2021/05/06 Python
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS