P

ython是一个优秀的通用性编程语言,站在AI的风口,光芒四射,更是借助开源流行库(NumPy, SciPy, Matplotlib, Pandas等),成为强大的科学计算,机器学习首选环境。前面文章也讲过python为什么这么牛,我们今天也来学习一下其七种武器之一的NumPy库。

目录

  • 七种武器

  • Numpy介绍

  • Numpy安装

  • 基础结构

  • 函数及操作

  • 高阶功能

  • Pandas介绍

  • 总结

1

Python的七种武器

官网 https://scipy.org/

Sigh Pie官网展示了Python的用于科学计算,统计分析,机器学习用途的开源武器:

  • NumPy多维数组/矩阵基础包,是很多其他包的基石,如Pandas

  • SciPy   : 科学计算基础包

  • Matplotlib: 快速生成2D图像

  • IPython: 增强的交互命令行

  • Sympy  : 数学符号计算库,积分,微分,线性代数

  • Pandas :基于NumPy的数据分析,支持Series, Time-Series, DataFrame,                     Panel,功能非常强大。


以上六种+Python本身构成了“七种武器”。

2

NumPy介绍

NumPyNumerical Python Extensions)是一个第三方的开源Python包,用于科学计算,其前身是1995年开始开发的基于一个用于数组运算的库,经过长时间的发展,基本上成了绝大多数Python科学计算的基础包。

NumPy主要操作的对象是同种类型元素的多维数组/矩阵,并提供大量科学计算,尤其是线性代数,简单数学,逻辑,排序,选择,I/O,傅立叶变换,基本统计,随机模拟;而标准Python库中的array.array只提供少量功能。



NumPy: http://www.numpy.org/

官网如下简洁介绍:

  • 强大的N维数组对象及处理

  • sophisticated (broadcasting) functions 强大的函数功能,broadcasting?

  • 与C++与Fortran集成

  • 线性代数、傅立叶转换和随机数生成函数

NumPy提供了两种基本的对象,ndarray(N-dimensional array object)和ufunc(universal function object)可以对其N维数组进行计算处理.

3

NumPy安装

可以去官网下载适合wheels,并在Python环境中进行安装。

https://pypi.python.org/pypi/numpy


安装后简单在Python的命令行环境IDLE中运行:


4

基础结构

多维数组ndarray

NumPy的主要对象是同质多维数组,矩阵。所为同质即其所有元素的类型都相同。其中维度称作轴axes,轴的数目称为秩rank


ndarray.ndim:数组维度的数量,rank , 如2维数组的rank = 2;

ndarry.shape :  数组的维度,对于n行m列的矩阵,shape则是(n,m), 所以shape元组的长度即是rank

ndarry.size:多维数组总个数,如2*3矩阵size=6

如下面在PyCharm CE下面的示例:


首先通过arange(15)个数,并reshape成3*5矩阵,所以其对应shape为(3,5),维度为2维,矩阵,size为3*5=15;

内存结构

多维数组的内存结构分为两大对象,一块用来保存数据区域,一块用来描述元数据类型的dtype


多维数组创建

直接从标准数组创建:

b=np.array( [(1,2),(3,4)])

创建复数类型:


zeros:创建全部由0组成的数组

ones:则创建一个由1组成的数组

empty:随机由内存中数据生成

arange:安装指定规则生成

linspace:浮点数生成数组


简单方便,最后linspace则是针对浮点数,参数则是希望得到的元素个数,而非arange中的步长作为参数。

5

函数及操作

数组/矩阵基本操作

对于数组元素级别的操作:


包括数组元素的相减,自己元素*2,或者平方,或者进行判断操作。

同样对于,多维数组/矩阵也同样适用:


对于矩阵的简单基本操作我们已经可以看出NumPy的灵活方便。

对于我们关心的矩阵乘法,则需要使用函数dot


如上,a*b只是简单的对应元素相乘,dot则是真正矩阵乘法。另外,多维数组也支持子操作,如a *= 2;

其他通用函数

其他通用函数同样可以作用于多维数组/矩阵,如sin,cos,exp,average,cov,ceil, transpose等

all: 测试是否True


类似C语言风格,非零即True


soft用指定算法对数组进行排序,算法包括了quicksort, mergesort, heapsort等,默认快排序,对于排序算法的性能,参考如下:


总体来说,做到了简单,灵活。


sort甚至可以对结构化数组进行排序:


简直方便到让人流口水。。。

transpose:矩阵转置


6

高阶功能

Broadcasting

Numpy中引入的广播broadcasting用来解决两个形状不同的矩阵阵列如何进行扩展从而可以继续进行数学计算的机制。简单来说,较小的阵列“广播”扩展到较大的阵列相同的形状维度,使得它们可以对等进行输血计算,广播提供过了一种向量化的操作方式,并且Python的广播不需要数据复制,执行效率高效。

具体的广播规则则是让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐:


同样,在矩阵乘法中:


傅立叶变换/分析

傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数或者它们的积分的线性组合,在各个学科中有广泛的应用。

Numpy中包含了标准FFT(一维,一维离散,两维,N维度等),实际FFT等等。这里自动过滤。

下面看一个官网的一维离散傅立叶变换


运行生成的图像为:


简单财务函数

Numpy提供了一些简单的金融财务的函数,如计算现值pv,终值fv,贷款利息,收益率等比较基本功能,可以自行查阅API文档。

线性代数

这个应该作为多维数组/矩阵框架的基本款吧?


还有其他计算特征值,范数,行列式,以及求解矩阵方程式或线性标量方程组,最小二乘法,求逆等。

我们来看一下我们感兴趣的最小二乘法吧:

lstsq:求解最小二乘解返回到线性矩阵方程

如 求适合直线,y = mx + c

x = [0,     1,    2,    3]

y = [-1, 0.2, 0.9, 2.1]


并且可以用简单代码生成拟合图像:


运行后,生成如下拟合图:


统计/随机抽样

统计与随机分布也是必不可少的函数,包含了随机数据random, sample; 分布beta, binomial, 指数分布,正态分布,泊松分布等等几十种,统计函数如标准方差std,协方差等等。

当然,我们也重点看看我们感(neng)兴(kan)趣(dong)的正态/高斯分布吧:

random.normal(loc, scale, size): 高斯分布绘制随机样本

请自行查阅维基百科:http://en.wikipedia.org/wiki/Normal_distribution

我们来看一下吧:


生成的图形如下:


7

总结

NumPy作为Python的开源数值计算扩展,可以媲美MatLab来处理存储大型矩阵,并作为其他几种武器之基石,在机器学习的风口上,值得去花时间研究应用,希望我们也有时间继续介绍其他秘密武器,尤其是Pandas

往期回顾:

外卖机器人诞生!快递小哥会失业吗?

刚刚,有位大神用AI搞定了多位女神

你敢@微信官方,不怕它真送你一顶绿色圣诞帽?

别人都在晒18岁照片,而我却在学习~

今日头条败给了色情?AI算法不行,还是另有隐情?

【机器学习】python凭什么能被纳入教材

【机器学习】朴素贝叶斯算法分析

【机器学习】主成分(PCA)算法分析

【机器学习】非线性回归算法分析

【机器学习】线性回归算法分析

读AlphaZero论文随想

进击的TensorFlow

【通俗理解】协方差

【通俗理解】贝叶斯统计

从一个双控开关思考神经网络(下)

从一个双控开关思考神经网络(上)

【机器学习】Python秘密武器之Numpy相关推荐

  1. python基础代码库-Python基础数据处理库-NumPy

    最近更新:2017-07-19 NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SKlearn就需要NumPy的支持.掌握NumPy的基础 ...

  2. python安装numpy-python及numpy安装

    一直想要学习python,之前自己看过一段时间,但是苦于没有项目可以实践,过段时间久忘了.想了解下机器学习,看到有本书,叫做<机器学习实战>,书中算法全部用python实现.这不正好可以拿 ...

  3. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy

    文章申明 文章作者:梁斌伟 责任编辑:郭德真 微信编辑:玖蓁 本文转载自公众号 实战统计学 (ID:statrcn) 原文链接:可视化图解Python科学计算包NumPy 作者:梁斌伟 编者按: 你真 ...

  4. Python技术分享:numpy库的安装教程

    一.numpy简介 NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.NumPy这个词来源于两个单词-- Numerical和Python.NumPy提供了大量的库函数和操作,可以 ...

  5. 01_NumPy介绍,什么是NumPy,Python应用、(NumPy、SciPy、Matplotlib相关网址)--来自菜鸟和NumPy中文网

    转自:https://www.runoob.com/numpy/numpy-tutorial.html https://www.numpy.org.cn/article/basics/understa ...

  6. anaconda3卸载python_机器学习Python编程环境:VSCode+Anaconda

    机器学习Python编程环境(Windows):VSCode+Anaconda 安装顺序:Anaconda ->VSCode (不必下载Python)->机器学习常用Python包 为什么 ...

  7. python的开发环境有哪些系统_Win10下配置机器学习python开发环境

    近期计划写一写机器学习微信小程序的开发教程,但微信开发工具只提供了Windows和Mac OS版本,作为一名长期使用Linux系统的开发人员,虽然始终认为Linux系统才是对开发者最友好的,但微信团队 ...

  8. python科学计算_可视化图解Python科学计算包NumPy

    NumPy包是python生态系统中数据分析.机器学习和科学计算的主力. 它极大地简化了向量和矩阵的操作.Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分(例如scikit-lea ...

  9. 图解python_可视化图解Python科学计算包NumPy

    NumPy包是python生态系统中数据分析.机器学习和科学计算的主力. 它极大地简化了向量和矩阵的操作.Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分(例如scikit-lea ...

最新文章

  1. 简析平衡树(三)——浅谈Splay
  2. Linux命令基础6-mkdir命令
  3. Linux 内核网络子系统 总结 (未完待续)
  4. 【设计模式】java设计模式之 -- 策略模式
  5. “金星生命论”乌龙事件新进展:那只是二氧化硫而已
  6. 域上的全矩阵环是单环
  7. 【BLE】TI CC2640R2F片内OAD实验
  8. 6_python基础—循环
  9. 设置EntityFramework中decimal类型数据精度
  10. 直线算法(Bresenham)
  11. 【元胞自动机】基于元胞自动机模拟生命游戏含Matlab源码
  12. js对联广告,顶部浮动广告,固定位置广告插件
  13. 创业维艰:一切从实际出发
  14. 3 整型变量,实型数据(主要是实型变量)2021-01-25
  15. win10,ubuntu18.04系统下图像识别YOLOv5菠萝_附菠萝数据集图片标签
  16. 《乱世中的美神》梁衡
  17. LICEcap 一款小巧的GIF屏幕录制软件
  18. Type-C潮流下 如何衡量一款数据线好坏?
  19. 三大运营商将重新划分4G版图
  20. 查询rssi指令_h3c无线控制器常用命令(wx)

热门文章

  1. redis 缓存防止击穿
  2. 【英语语法入门】第04讲 代词的主格和宾格
  3. CSDN线上竞赛第52期题解
  4. 敏捷管理 -- 时间和成本管理
  5. OpenVZ加速TCP的BBR优化魔改版本
  6. Spring Cloud Alibaba学习记录
  7. 老鹰-第一次Python笔记
  8. 17、Java基础---接口
  9. cnki 爬虫类论文 推荐
  10. win7 x64下安装python-opencv 及 “not a supported wheel”解决