Contents

Numpy是一个用python实现的科学计算包,主要提供矩阵运算的功能,而矩阵运算在机器学习领域应用非常广泛,Numpy一般与Scrapy、matplotlib一起使用。

Numpy用途

Numpy主要用作高性能计算和数据分析,其操作是围绕ndarray这么一个矩阵元素来进行。在数据分析的应用中,Numpy主要功能体现在:
1.用于数据清理和整理、子集构造和过滤、转换等快速的矢量化数组运算
2.常用的数组算法、如排序、化、集合运算等
3.统计和数据聚合运算
4.异构数据的合并/连接/转换

Numpy的安装

如果你环境没问题的话,pip install numpy即可,如果遇到问题,就到网上去下载wheel,用pip install .whl的方法进行安装。这里就不赘述了。

Numpy常用方法总结

创建矩阵


我们习惯把Numpy简写作np
对于多维对象,以此类推即可

获取矩阵行数列数(二维情况)

针对上面的代码,只需print(a2.shape),就会打印出一个元组(2,5)分别是2和5.

矩阵的截取

使用索引切片运算

我们以一个索引切片对二维数组进行操作的实际情况为例

在上面的例子中,切片运算是以[start:end]形式,也就是指定起始索引(包括)与结尾索引(不包括)来切出子字符串。
举个例子,在a[0:1]中,就是[start:end]中start等于0,end等于1的情况下,在这种情况下,就会显示数组a的第0行(包括)到第1行(不包括)的数据。先来就是[[1,2,3,4,5]]
再来看一个例子,在a[1,2:5]中,逗号前的1代表第一行(实际上是第二行,但是我习惯把真正的第一行称作第0行来对应它的数字),逗号后的2:5,就是第二列(包括)到第五列(不包括)的数字。还是那个问题,因为我习惯上把第一行称作第0行来对应实际上的第一行,因此这里的实际上是第三列(包括)到第六列(不包括),这个得看你们各自的习惯,只要理解了都是可以的。
切片索引的另一个形式就是[start:end:step],也就是切出起始索引与结尾索引(不包括)之间每次间隔step元素的内容(也就是省略step时,就相当于使用1).还是来看一个例子

a[1,2:5:2]的意思就是获取第一行的第二列(包括)到第五列(不包括)的数值,但是其中间隔为2,就是每次间隔为2后获取一下值。它的输出结果显然就是[8,10]了。
实际上了解索引意义的开发人员都知道索引其实就是相对第一个元素的便宜值。在python中,正索引就是指正偏移值,负索引就是负偏移值,-1索引就是倒数第一个元素,-2索引就是倒数第二个元素。
我们再来看一个例子

其中逗号前的1仍是指第一行,后面的依旧符合[start:end]的规则,从第四列(包括)到第二行(不包括),每次都相对于第一个元素偏移-1个单位,显然值就是[10,9]

按条件截取

按条件截取其实是在[]中传入自身的布尔语句
我们先来看一个最简单的例子
大专栏  numpy学习总结xjh.cn/http://zzulixjh.cn//2018/07/16/numpy/e.png"/>
那么它就会输出[7,8,9,10]
再来看一个满足一定条件的元素变成特定的值的例子

其实不二语句首先会生成一个布尔矩阵,将布尔矩阵传入[]实现截取
我们可以打印一下 a>6

矩阵的合并


其中hstack是将矩阵横向合并,vstack是将矩阵纵向合并

一些创建矩阵的函数

arange

我们可以通过arange来创建一些有规律的常用的矩阵
例如 a = np.arange(10)会创建一个从0开始到10(不包括10),步长为1的矩阵
[0,1,2,3,4,5,6,7,8,9]

linspace

linspace()用于创建指定数量等间隔的序列,实际产生一个等差数列。
例如 np.linspace(0,10,7)就是产生首位是0,末尾是10,含7个数的等差数列

logspace

logspace用于产生等比数列
例如np.logspace(0,4,5)就是产生首位是10的0次方,末尾是10的四次方的含5个数的等比数列。

矩阵的运算

常用矩阵函数

np.sin(a) 对矩阵a中每个元素取正弦,sin(x)
np.cos(a) 对矩阵a中每个元素取余弦,cos(x)
np.tan(a) 对矩阵a中每个元素取正切,tan(x)
np.arcsin(a) 对矩阵a中每个元素取反正弦,arcsin(x)
np.arccos(a) 对矩阵a中每个元素取反余弦,arccos(x)
np.arctan(a) 对矩阵a中每个元素取反正切,arctan(x)
np.exp(a) 对矩阵a中每个元素取指数函数,ex
np.sqrt(a) 对矩阵a中每个元素开根号√x
在使用这些矩阵时,只需将要进行运算的矩阵放入到()内即可,比如我要对矩阵a的元素进行sin()操作,只需np.sin(a)

矩阵乘法

矩阵乘法必须满足矩阵乘法的条件,即第一个矩阵的列数等于第二个矩阵的行数。
矩阵乘法的函数位dot

矩阵转置

如果需要将矩阵a进行转置,只需a.T即可

矩阵信息的获取

最大值最小值

获得矩阵中元素最大最小值的函数分别是max和min,可以获得整个矩阵、行或列的最大值最小值。对于矩阵a:
a.max() 整个矩阵的最大值
a.min() 整个矩阵的最小值
a.max(axis=0)获取每一行上的最大值
a.min(axis=0)获取每一行上的最小值
a.max(axis=1)获取每一列上的最大值
a.min(axis=1)获取每一列上的最小值

平均值

平均值的函数为mean(),其余方法和最大最小值差不多。

方差

方差的函数为var(),var()相当于mean(abs(x-x.mean())**2)
针对行列的方差参考最大值最小值

标准差

标准差的函数为std(),相当于sqrt(x.var())

求和

矩阵求和的函数是sum(),可以对行、列、整个矩阵求和

累计和

某位置累计和指的是该位置之前(包括该位置)所有元素的和
例如序列[1,2,3,4,5],其累计和为[1,3,6,19,15]

numpy学习总结的更多相关文章

  1. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  2. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  3. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  5. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  6. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  7. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  8. numpy 学习总结

    numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...

  9. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

  10. Numpy学习1

    NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...

随机推荐

  1. CSS知识点小结

    在网页排版布局中比如文章列表标题排版,无论多少文字均不希望换行显示,需要强制在一行显示完内容.这就可以nobr标签来实现. 一.nobr语法 <nobr>内容</nobr> 不 ...

  2. Linux inode 理解

    inode 硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB).操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性读取一 ...

  3. 16)PHP, set_include_path

    代码展示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  4. Android之布局RelativeLayout

    线性布局的weight属性在等比例分配时比较方便,但是对复杂的界面,嵌套多层LinearLayout布局会导致渲染变慢,占用更多系统资源:而使用RelativeLayout的话,可能仅仅需要一层就可以 ...

  5. Qt的窗口如何显示在spi屏幕上

    问题:我们可以将qt移植到H3上,但是如果要将窗口通过spi屏进行显示应该怎么做呢,和framebuffer又有什么关系? 这里只说一下qt在spi屏上显示的技术原理,具体的实现还需要自己努力. 一. ...

  6. B-Tree(B树)原理及C++代码实现

    B树是一种平衡搜索树,它可以看做是2-3Tree和2-3-4Tree的一种推广.CLRS上介绍了B树目前主要针对磁盘等直接存取的辅存设备,许多数据库系统也利用B树或B树的变种来存储信息. 本文主要针对 ...

  7. IMX6开发板Qtopia2.2.0开发环境搭建以及编译镜像

    搭建 Qtopia2.2.0 开发环境,需要先搭建 Android 的编译环境,然后在 Android 编译环境的基础上,再搭建 Qtopia2.2.0 编译环境.以下内容基于迅为-iMX6开发板.Q ...

  8. WMS备货单保存后自动新增选项不勾选

  9. elastic search记录

    安装与启动 插件安装 中文分词器 https://github.com/medcl/elasticsearch-analysis-ik elastic api GET _search { " ...

  10. [LC] 90. Subsets II

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...